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」を取得します。

3

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
1

データの範囲の最終行を取得

指定したセルを囲むデータがある範囲を取得するには 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」で実行すると、次の範囲の最終行を取得できます。

1

シート全体の最終行を取得する

シート全体で使用しているセルの最大範囲を取得するには 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

最大範囲とはシートに入力されている一番上、下、左、右のセルの範囲です。書式を設定しているセルも含まれます。

2