カテゴリー
Microsoft

【Excel VBA】データの入ったことのある最大行数・最大列数を取得するコード

ポイント

  • Worksheet.UsedRange プロパティを利用して最大行数・最大限を取得する。
  • 書式やデータが入っていなくても過去に編集のあったセルも対象となる。
  • 過去に編集があったセルは [削除] すれば対象から外れる。

VBA コード

Dim book As String: book = "新規 Microsoft Excel ワークシート.xlsx"
Dim sheet As String: sheet = "Sheet1"

Dim row As Long
Dim col As Long
' Workbooks(book).Sheet(sheet) でなくても、
' Worksheets(sheet) でも ActiveSheet でもよい。
With Workbooks(book).Sheet(sheet).UsedRange
    row = .Rows(.Rows.Count).Row
    col = .Columns(.Columns.Count).Column
End With

コード解説

With を使わずに書くと次のようになります。

Worksheet.UsedRange.Rows(Worksheet.UsedRange.Rows.Count).row

Worksheet.UsedRange.Rows.Count はデータ範囲に含まれている行数であり、A1 からの行番号ではありません。

Worksheet.UsedRange.Rows(Index) はデータ範囲の Index 番目のセルを指します。

したがいまして、データ範囲の行数 (Worksheet.UsedRange.Rows.Count) を取得し、Worksheet.UsedRange.Rows に渡してやることで最下端のセルを取得できますわ!

後は .row で最下端の行番号を取得すればよいですの♪

おわりに

すべてのセルに対して何か処理をしたいから範囲を (取りこぼしがなければ余分があってもいいので) ざっくりと取りたいです。そのために、1番右下のセルがどこなのかを特定したいですの。。。

以前の投稿で紹介した、トリムなどで使いたいのですわ。

そのような要望があり、次のページを参考にして今回のコードを見つけ、理解することができました♪

この結果から R1C1 形式のセルの場所がわかりました。ここからセル参照、Adress、アドレス、A1 形式 (なんと呼称するのかあまり理解していない><) に変換したかったのでした。

そのときには、次のページが参考になりました!ありがとう存じます!

以上です。

コメントを残す