サイトについて      連絡先   検索

VBA 最終行を取得する

はじめに

Excel VBA の最終行を取得する方法を紹介します。

Range.End メソッドで最終行を取得できます。

Rows プロパティから指定した範囲の最終行を取得できます。

最終行を取得する

最終行を取得

Range.End の引数に方向を指定すると、指定した行の終端のセルを取得できます。

これは Excel で End + ↑↓←→ キーを入力したときと同じセルを取得できます。

方向には次のものがあります。

定数名 説明
xlUp-4162上端
xlDown-4121下端
xlToLeft-4159左端
xlToRight-4161右端

End.EntireRow と指定すると、終端の行を取得できます。

Dim r As Range
Set r = Range("B2").End(xlDown).EntireRow ' セル「B2」の下端の行を取得
Set r = ActiveCell.End(xlUp).EntireRow    ' アクティブセルの上端の行を取得
r.Select

セル「B2」で End(xlDown).EntireRow とすると、セル「B6」の行を取得します。

セル「C2」で End(xlDown).EntireRow とすると、セル「C3」の行を取得します。

3

上の画像の列「C」のように途中に空白のセルがあると、最終行を取得できません。

こういうときはシートの最終行から上端のセルを取得します。

Dim r As Range
Set r = Cells(Rows.Count, 3).End(xlUp) ' 3 は列「C」のこと
r.Select

範囲の最終行を取得

セルの範囲の一番上の行番号を取得するには Range.Row で取得できます。

セルの範囲の行数を取得するには Range.Rows.Count で取得できます。

セルの範囲の最終行を取得するには Rows(Range.Row + Range.Rows.Count - 1) で取得できます。

または Range.Rows(Range.Rows.Count).EntireRow で取得できます。

Dim r As Range
Dim last As Range
Set r = Selection
Set last = Rows(r.Row + r.Rows.Count - 1) ' 範囲選択している最終行を取得
Set last = r.Rows(r.Rows.Count).EntireRow ' 範囲選択している最終行を取得
last.Select
1

使用している範囲の最終行を取得

Sheets.UsedRange を指定すると、指定したシートで使用されているセルの最大範囲を取得できます。最大範囲とはシートで使用されている一番上、下、左、右のセルの範囲です。

UsedRange で取得した範囲を「範囲の最終行を取得」の方法を使用して最終行を取得します。

Dim r As Range
Dim last As Range
Set r = ActiveSheet.UsedRange ' 使用している範囲を取得
Set last = Rows(r.Row + r.Rows.Count - 1) ' 使用している最終行を取得
last.Select

UsedRange を使用すると、次の画像の範囲を取得できます。

2

UsedRange が使用しているセルと判断するのは、値が入っている他に書式設定されているセルも含まれます。

2

関連ページ