更新日:、 作成日:
VBA 最終行を取得する
はじめに
Excel VBA マクロで最終行を取得する方法を紹介します。
Range.End メソッドから、列の最終行を取得できます。
Range.Rows.Count プロパティから、セルの範囲の最終行を取得できます。
UsedRange プロパティから、シート全体で使用している最大範囲の最終行を取得できます。
列の最終行を取得
列に連続したデータのあるセルの最終行を取得するには Range.End(xlDown) のように入力します。
これは Excel で Ctrl + ↓ キーを入力したときと同じセルを取得できます。
下以外にも次の方向を指定できます。
定数名 | 値 | 説明 |
xlUp | -4162 | 上端 |
xlDown | -4121 | 下端 |
xlToLeft | -4159 | 左端 |
xlToRight | -4161 | 右端 |
セル「B2」の下方向の最終行を取得するには Range("B2").End(xlDown).EntireRow を入力します。
Dim r As Range
Set r = Range("B2").End(xlDown).EntireRow ' B2 からの最終行を取得
Set r = ActiveCell.End(xlDown).EntireRow ' アクティブセルからの最終行を取得
r.Select
セル「B2」の下方向は「B6」を、セル「C2」の下方向は「C3」を取得します。
C 列のように途中に空のセルがあると、その前のセルが取得されます。
列の最終行
列の最終行を取得するには、一番下の行から上方向にセルを取得します。
列「C」の最終行を取得するには次のようにします。
Dim r As Range
Set r = Cells(Rows.Count, 3).End(xlUp).EntireRow ' 3 は C 列
r.Select
スポンサーリンク
セルの範囲の最終行を取得する
セルの範囲の一番上の行番号を取得するには Range.Row のように入力します。
セルの範囲の行数を取得するには Range.Rows.Count のように入力します。
セルの範囲の最終行を取得するには Rows(Range.Row + Range.Rows.Count - 1) または Range.Rows(Range.Rows.Count).EntireRow のように入力します。
Dim c As Range
Set c = Range("B2:D4") ' セルの範囲
Dim r As Range
Set r = Rows(c.row + c.Rows.Count - 1) ' セルの範囲の最終行を取得
Set r = c.Rows(c.Rows.Count).EntireRow ' セルの範囲の最終行を取得
r.Select
データの範囲の最終行を取得
指定したセルを囲むデータがある範囲を取得するには Range.CurrentRegion を入力します。
これは Excel で Ctrl + Shift + * キーを入力したときと同じセルを取得します。
後はセルの範囲の最終行を取得する方法と同じです。
Dim c As Range
Dim r As Range
Set c = Range("B2").CurrentRegion
Set r = c.Rows(c.Rows.Count).EntireRow
Set c = Range("B6").CurrentRegion
Set r = c.Rows(c.Rows.Count).EntireRow
Set c = Range("B10").CurrentRegion
Set r = c.Rows(c.Rows.Count).EntireRow
r.Select
セル「B2」、「B6」、「B10」で実行すると、次の範囲の最終行を取得できます。
シート全体の最終行を取得する
シート全体で使用しているセルの最大範囲を取得するには UsedRange を入力します。
後はセルの範囲の最終行を取得する方法と同じです。
Dim c As Range
Set c = UsedRange ' 最大範囲を取得
Dim r As Range
Set r = Rows(c.Row + c.Rows.Count - 1) ' シート全体の最終行を取得
Set r = c.Rows(c.Rows.Count).EntireRow ' シート全体の最終行を取得
r.Select
最大範囲とはシートに入力されている一番上、下、左、右のセルの範囲です。書式を設定しているセルも含まれます。
スポンサーリンク