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

VBA 行を取得する

はじめに

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

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

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

  • 目次
    • 行を取得する
    • 行の範囲を取得する
    • 指定したシートの行を取得する

行を取得する

行番号で取得

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

行「2」を取得するにはRows(2)を入力します。


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

Range の引数にセル名を指定すると、そのセルの行を取得できます。

セル「A2」の行を取得するにはRange("A2").EntireRowを入力します。


Dim r As Range
Set r = Range("A2").EntireRow ' 2 行目
r.Select

アクティブ行を取得

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


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

アクティブなセルとは、入力されるセルのことです。

選択行を取得

選択しているセルのある行を取得するにはSelection.EntireRowを入力します。


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

範囲選択しているときは、そのすべての行が取得されます。

最終行を取得

オフセット位置を取得

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

セル「B2」から行「1」、列「0」移動したセルの行を取得するにはRange.Offset(1, 0).EntireRowを入力します。


Dim r As Range
Set r = Range("B2").Offset(1, 0).EntireRow  ' B3 の行を取得
r.Select

Set r = Range("B2").Offset(-1, 0).EntireRow ' B1 の行を取得
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 ~ 4」を取得するにはRange("1:1, 3:4")を入力します。


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

またはUnion(Range("1:1"), Range("3:4"))を入力します。

Union を使用すると、取得したセルと別のセルを組み合わせた範囲を取得できます。


Dim r As Range
Set r = Union(Range("1:1"), Range("3:4")) ' 1 行目と 3 ~ 4 行目
Set r = Union(c, Range("6:6"))            ' 1 行目と 3 ~ 4 行目 と 6 行目
r.Select

行数変更する

行の範囲「1 ~ 2」を 3 行にして取得するにはRange("1:2").Resize(RowSize:=3)を入力します。


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

データの範囲の行を取得

指定したセルを囲むデータがある範囲の行を取得するにはRange.CurrentRegion.EntireRowを入力します。

これは Excel でCtrl + Aキーを入力したときと同じセルを取得します。


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」で実行すると、次の範囲の行を取得できます。

1

特定の行を取得

条件に一致するセルのある行を取得するにはRange.SpecialCells(条件).EntireRowのように入力します。

1 つのセルに対して指定すると、シート全体で条件に一致するセルの行を取得します。

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

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

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

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

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

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

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

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

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

r.Select

同じ行に複数一致するセルがあるときは、その数だけその行が取得されます。

条件に一致するセルが見つからないときは「エラー 1004 アプリケーション定義またはオブジェクト定義のエラーです。」が発生します。

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

使用されているセルの最大範囲の行を取得するにはUsedRange.EntireRowを入力します。


Dim r As Range
Set r = UsedRange.EntireRow
r.Select

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

2

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

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

Sheet1 を指定するにはWorksheets("Sheet1")またはWorksheets(1)を入力します。

sheet1

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

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

Sheet1 に Rows を入力すると、自身のシートの行になります。自身を表すMe.が省略されています。


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

標準モジュールに Rows を入力すると、アクティブなシートの行になります。アクティブシートを表すActiveSheet.が省略されています。


' どちらも同じコード
Dim r As Range
Set r = Rows(1)
Set r = ActiveSheet.Rows(1)
  • 目次
    • 行を取得する
    • 行の範囲を取得する
    • 指定したシートの行を取得する