「excel vba 最終行取得」
「エクセル vba 最終行の取得」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスが時折あります。
VBA(Visual Basic for Applications)で、Excelマクロを作るときに生じる定番の疑問の一つです。
Excel VBAで最終行を取得する方法を探している方による検索です。
最終行番号を取得するサンプルコード
まずは、参考になりそうなコードをご紹介しておきます。※A列にデータが隙間なく入力されているときに最終行の行番号をメッセージボックスに表示する例
MsgBox Range("A1").End(xlDown).Row
上記のコードを実行すると、A列の最終行の行番号がメッセージボックスに表示されます。
Range("A1").End(xlDown)というコードの意味
Excelでセル選択を行うのにとても便利な[Ctrl]+矢印キーという操作があります。
Excelには、データの途切れるセルがわかっているのです。
データの途切れるセルがわかっているので[Ctrl]+矢印キーというショートカットキーで、データの途切れるセルを選択できるわけです。
そのデータの途切れるセルをVBAで取得するときに利用するのが、RangeオブジェクトのEndプロパティです。
データの途切れる箇所と一言で言っても、4方向あります。
上・下・右・左の4方向です。
どの方向のデータの途切れるセルを取得したいのかを指定するのがEndプロパティの後ろの括弧の中の引数です。
Range("A1").End(xlDown)
というコードのxlDownが下方向のデータの途切れるセルを意味しています。
右なら、xlToLeft
左なら、xlToRight
上なら、xlUp
を引数に指定してください。
A1セルから下方向のデータの途切れるセル(A列の最終セル)の、行番号を取得するためにRowプロパティを使い
Range("A1").End(xlDown).Row
というコードにしています。
上記ではメッセージボックスに行番号をいきなり表示するので
MsgBox Range("A1").End(xlDown).Row
としていますが、その行番号をプロシージャの中で使うのなら
end_row = Range("A1").End(xlDown).Row
のような形で変数に格納して使うと便利でしょう。
最終行をどうしたいのかでRange("A1").End(xlDown)の後ろは変わります
行番号を使うのではなく、
A列の一番下のセルを選択したいのならば、
Range("A1").End(xlDown).Select
最終行全体を選択したいのならば、
Range("A1").End(xlDown).EntireRow.Select
といったコードです。
もし表がB6セルから作ってあるのなら
Range("B6").End(xlDown).Row
Range("B6").End(xlDown).Select
Range("B6").End(xlDown).EntireRow.Select
といったコードです。
これが、Excel VBAで最終行を取得する基本です。
ただし、この基本で最終行を取得できないケースも表のつくり方によっては生じてしまいます。その解決方法については近日中に別記事としてご紹介します。(途中に空白セルがある場合に最終行を取得するコードをご紹介しました。2013-09-11)
- Newer:最初に学ぶべきもの、後回しでよいものがわかりよかった
- Older:光の力で消臭・抗菌 #ルネキャット 体験イベント
Home » Excel VBA Rangeオブジェクト » Endプロパティ » 最終行を取得するVBAのコード-End(xlDown)