ポイント
- 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 形式 (なんと呼称するのかあまり理解していない><) に変換したかったのでした。
そのときには、次のページが参考になりました!ありがとう存じます!
以上です。