よく使うんだけど実は奥が深い最終行の取得について今回はまとめます。
最終行の取得でなぜはまる?
最終行を取得しようとして行を下に追いかけて行って空白行がある場合は、その上を最終行と認識してしまいます。
間違って行を挿入してしまった場合とかに発生しますが、処理行数をチェックした時に「全然足りない!」ってギョっとしますよね。
最終行を取得するVBA
よく使用するのはA列の最終行を取得する
Range(“A1”).End(xlDown).Row
Cells(1,1).End(xlDown).Row
では無いでしょうか。
ほぼ決まり文句みたいなものですね。丸暗記している人も多いと思います。
Rangeであればアルファベット、Cellsであれば2項目目で検索する列を指定します。
でもこれでは空白行があるとその後ろが漏れてしまいます。
A | B | C | |
---|---|---|---|
1 | あ | ||
2 | い | ||
3 | う | ||
4 | |||
5 | え | ||
6 | お | ||
7 | |||
8 |
Y = Range(“A1”).End(xlDown).Row
とすると Y には 3 が代入されます。
最終行から上に向かってチェックする
実際に確認する場合はキーボードを使って Ctrl + ↓ でワークシートの最終行に移動し、次に Ctrl + ↑ と入力してデーターの最終行に移動して最終行をチェックしますよね。
A列を確認対象にして、これを VBA で記述すると
Cells(Cells.Rows.Count, 1).End(xlUp).Row
になります。こちらを定型文として暗記することをおすすめします。
上記例で
Y = Cells(Cells.Rows.Count, 1).End(xlUp).Row
とすると Y には 6 が代入されます。
確認はメッセージボックスやイミディエイトウィンドウを使うと良いです。
Msgbox Cells(Cells.Rows.Count, 1).End(xlUp).Row
Debug.Print Cells(Cells.Rows.Count, 1).End(xlUp).Row
この記事へのコメントはありません。