【Excel VBA】ワークシート内のデータがある最終行番号を取得する方法

VBAでfor nextステートメントなどでループを回す際、対象となる範囲の最終行の番号を自動的に取得できると便利です。

今回はワークシート内のデータがある最終行番号を取得する方法についてまとめていきます。

コードサンプル

最終行取得①

2行目の”LastRow”は変数名です。

この変数には数値が入りますので、変数名のデータ型は「Long」にしています。

3行目は、変数”LastRow”の中身を設定しています。

ここが若干複雑です。

まず、「Cells(Rows.Count, 1)」でアクティブになっている(最後に開いた)シートの1列目(A列)の最終行を取得します。

ここでの最終行とは、ワークシートの一番下の番号を指します。

つまりExcel2007以降は”1048576″ですね。

それを特定してから、「End(xlUp)」でワークシート上のショートカットでいう[Ctrl]+「↑」を行ったと同様に上方向にデータがあるセルへジャンプさせます。

すると、何かしらデータのある行を指定することができます。

最後に「Row」の部分で行番号を返します。

長い解説になりましたが3行目をまとめると、変数”LastRow”はアクティブシートのA列のデータが何かしらデータがある最後のセルの番号(数値)となります。

4行目は、その変数”LastRow”をMsgBox関数でメッセージとして通知します。

マクロの動作イメージ

最終行取得②

このようにメッセージでA列のデータがある最終行の番号を通知できます。

最終行取得③

ちなみに「End(xlUp)」が抜けていると、データの有無関係なくワークシートの最終行が返りますのでご注意下さい。(Excelのバージョンによって最終行数は変わります)

まとめ

データがある最終行数を、対象のデータ数に応じて可変にしたい場面はかなり頻度が高いです。

今回のサンプルではMsgBox関数で簡単に解説しましたが、この部分を任意のコードに置き換えてもらえば、様々なケースに応用できますよ。

ご参考になれば幸いです(^^)


この記事が気に入ったら
いいね ! しよう

無料メルマガはじめました!(特典あり)

メールアドレスを登録すればブログではお伝えできない情報を無料で受信できます。
今なら特典として、サンプルファイルを無料でプレゼント中!
もっとエクセルをスキルアップしたい方は、ぜひご登録くださいm(__)m

ご案内

おすすめ記事