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

VBA 行を取得する

はじめに

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

Rows プロパティか Range プロパティから行を取得できます。

Range.EntireRow プロパティから指定したセルの行を取得できます。

行を取得する

行番号で取得

Rows の引数に行番号を指定すると、その行を取得できます。

行「2」を取得するには Rows(2) のように指定します。

Dim r As Range
Set r = Rows(2) ' 2 行目
r.Select
1

アクティブ行を取得

Range.EntireRow プロパティから指定したセルのある行を取得できます。

アクティブなセルのある行を取得するには ActiveCell.EntireRow のように指定します。

Dim r As Range
Set r = ActiveCell.EntireRow
r.Select
2

選択行を取得

Selection と指定すると、選択しているセルを取得できます。

選択しているセルのある行を取得するには Selection.EntireRow のように指定します。

Dim r As Range
Set r = Selection.EntireRow
r.Select
2

最終行を取得

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

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

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

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

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

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

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

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

3

この他の最終行を取得する方法は「最終行を取得する」をご覧ください。

オフセット位置を取得

Range.Offset の引数に行と列の数を指定すると、指定したセルから指定した数分ずれたセルを取得できます。

アクティブなセルの一つ上の行を取得するには ActiveCell.Offset(-1, 0).EntireRow と指定します。

Dim r As Range
Range("A3").Activate ' 3 行目のセルをアクティブ
Set r = ActiveCell.Offset(-1, 0).EntireRow ' 2 行目を取得
r.Select

Range("A3").Activate ' 3 行目のセルをアクティブ
Set r = ActiveCell.Offset(1, 0).EntireRow ' 4 行目を取得
r.Select
3

行の範囲を取得する

行の範囲を取得

行の範囲「2 ~ 3」を取得するには Range("2:3") のように指定します。

Dim r As Range
Set r = Range("2:3") ' 2 ~ 3 行目を取得
Set r = Range("5:5") ' 5 行目を取得
r.Select
4

離れた行を取得

行「1」と「3」と「5 ~ 6」を取得するには Range("1:1, 3:3, 5:6") のように指定します。

Dim r As Range
Set r = Range("1:1, 3:3, 5:6")
r.Select
5

データの範囲の行を取得

Range.CurrentRegion を指定すると、指定したセルを囲むデータがある範囲を取得できます。値が入っているセルが続く限り、セルの範囲が広がります。

Dim r As Range
Set r = Range("B2").CurrentRegion.EntireRow
Set r = Range("B6").CurrentRegion.EntireRow
Set r = Range("B10").CurrentRegion.EntireRow
r.Select

セル「B2」、「B6」、「B10」で CurrentRegion.EntireRow とすると、次の範囲の行を取得できます。

1

特定の行を取得

Range.SpecialCells の引数に条件を指定すると、条件に一致する全てのセルを取得できます。

Range でセルの範囲を指定すると、その範囲内で条件に一致する全てのセルを取得できます。

条件にはつぎのものがあります。

定数名 説明
xlCellTypeAllFormatConditions-4172条件付き書式が設定されているセル
xlCellTypeAllValidation-4174入力規制が設定が含まれているセル
xlCellTypeBlanks4空のセル
xlCellTypeComments-4144コメントが含まれているセル
xlCellTypeConstants2定数が入力されているセル
xlCellTypeFormulas-4123数式が入力されているセル
xlCellTypeLastCell11セル範囲内の最後のセル
xlCellTypeSameFormatConditions-4173同じ条件付き書式が設定されているセル
xlCellTypeSameValidation-4175同じ入力規制が設定が含まれているセル
xlCellTypeVisible12非表示になっていないセル

xlCellTypeConstants か xlCellTypeFormulas を指定したときは、第二引数に次の値を組み合わせて指定できます。

定数名 説明
xlErrors16エラー値
xlLogical4論理値
xlNumbers1数値
xlTextValues2文字

SpecialCells.EntireRow と指定すると、そのセルの行を取得できます。

Dim r As Range
' コメントが設定されている全ての行を取得
Set r = ActiveCell.SpecialCells(xlCellTypeComments).EntireColumn

' 「A1」~「C3」の範囲で、コメントが設定されている全ての行を取得
Set r = Range("A1:C3").SpecialCells(xlCellTypeComments).EntireColumn

' 文字が入っている全ての行を取得
Set r = ActiveCell.SpecialCells(xlCellTypeConstants, xlTextValues).EntireColumn

' 文字と数値が入っている全ての行を取得
Set r = ActiveCell.SpecialCells(xlCellTypeConstants, xlTextValues Or xlNumbers).EntireColumn

r.Select

SpecialCells で該当するセルが見つからないときは、エラーが発生します。

使用されている範囲を取得

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

UsedRange.EntireRow と指定すると、その範囲の行を取得できます。

Dim r As Range
Set r = ActiveSheet.UsedRange.EntireRow ' 使用されている範囲の行
r.Select

次の画像の範囲の行を取得できます。

2

指定したシートの行を取得する

Rows とコードに書くと、アクティブなシートの行を取得します。これは ActiveSheet.Rows の ActiveSheet が省略されています。

' どちらも同じコード
Dim r As Range
Set r = Rows(1)
Set r = ActiveSheet.Rows(1)

シートを指定するには Sheets の引数にシート名またはインデックスを指定します。

1

Sheet1 のシートを指定するには、Sheets("Sheet1") か Sheets(1) と書きます。

Dim r As Range
' Sheet1 の行「1」を取得
Set r = Sheets("Sheet1").Rows(1)
Set r = Sheets(1).Rows(1)

' Sheet2 の行「1」を取得
Set r = Sheets("Sheet2").Rows(1)
Set r = Sheets(2).Rows(1)

関連ページ