【Excel VBA】行番号と列番号を指定してセルを参照する…Cellsプロパティ

[Excel VBA]

行番号と列番号を指定してセルを参照するには、Cellsプロパティを使用します。例えば、「2行3列目のセル」は、「Cells(2, 3)」と表せます。行番号と列番号を数値で指定できるので、数値型の変数と組み合わせて、いろいろな場面でとても便利に使えます。

スポンサーリンク

書式

Worksheetオブジェクト.Cells([RowIndex], [ColumnIndex])

指定した行番号と列番号の位置にあるセルを参照するRangeオブジェクトを返します。読み取り専用のプロパティです。
[RowIndex]と[ColmnIndex]の両方を省略した場合、Worksheetオブジェクトの全セルが返されます。

Worksheetオブジェクトを省略した場合は、アクティブシートのセルが返されます。

引数

引数 指定 説明
RowIndex 省略可 行番号を表す数値を指定する
[RowIndex]だけを指定すると、インデックス番号を指定したことになる
インデックス番号は、セルA1が1、セルB1が2…、セルXFD1(1行目最右列のセル)が16384、セルA2が16385…となる
ColumnIndex 省略可 列番号を表す数値(列Aは「1」、列Bは「2」)を指定する 
または列番号を「"A"」「”B"」のように指定する

メモ

RowIndexとColumnIndexはCellsプロパティの引数ではない
上記の「書式」には「Cells([RowIndex], [ColumnIndex])」と書きましたが、実際にはCellsプロパティは引数を持ちません。例えば、「Cells(2 , 3)」は「2」と「3」がCellsプロパティの引数のように見えますが、実際には「Cells.[_Default](2, 3)」からRangeオブジェクトの既定のプロパティである「[_Default]」を省略した記述になります。

使用例

[RowIndex]と[ColumnIndex]の指定例

[RowIndex]と[ColumnIndex]を両方指定した場合、1つだけ指定した場合、1つも指定しなかった場合の例を紹介します。

[RowIndex]と[ColumnIndex]の両方を指定

Cells(2, 3).Select
2行3列目のセル(セルC2)を選択する
Cells(2, "C").Select
2行C列のセル(セルC2)を選択する

メモ

行番号と列番号の指定順に注意
セル番号は「C2」のように列、行の順に指定しますが、Cellsプロパティでは「Cells(2, 3)」「Cells(2, "C")」のように行、列の順に指定します。指定の順序が逆になるので気を付けてください。

[RowIndex]だけを指定

Cells(3).Select
ワークシートの3番目のセル(セルC1)を選択する

Cells(16385).Select
ワークシートの16385番目のセル(セルA2)を選択する
ワークシートは16384列あるので、16385番目のセルは2行1列目のセルA2になる

何も指定しない

Cells.Select
ワークシート上の全セルを選択する

 

セル範囲の指定方法

Cellsプロパティを使用してセル範囲を表現するには、Rangeプロパティの引数に始点のセルと終点のセルを指定します。

Range(Cells(2, 2), Cells(4, 5)).Select
2行2列目~4行5列目のセル(セルB2~E4)を選択する

 

特定のワークシートのセルの指定

Cellsプロパティの前にワークシートを指定しない場合、アクティブシートのセルが取得されます。アクティブシート以外のセルを取得したい場合は、ワークシートを指定します。

Worksheets("Sheet3").Cells(1, 1).Value = "売上表"
「Sheet3」という名前のワークシートの1行1列目のセル(セルA1)に「売上表」と入力する

メモ

カウンター変数との相性がバツグン
Cellsプロパティのメリットは、行番号だけでなく列番号も「数値」で指定できることです。1列ずつ順に何らかの繰り返し処理を行うような場合に、For~Nextステートメントのカウンター変数で列番号を加算しながら容易に処理を行えます。
次の例では、セルB3~G3に「1月」「2月」…「6月」を入力しています。
For i = 1 To 6
    Cells(3, i + 1).Value = i & "月"
Next

関連知識 RangeオブジェクトのCellsプロパティ

RangeオブジェクトもCellsプロパティを持ちます。Rangeオブジェクトで指定したセルを基準として、相対的な位置にあるセルが返されます。

Rangeオブジェクト.Cells([RowIndex], [ColumnIndex])

RangeオブジェクトのCellsプロパティ

Range("B2").Cells(2, 3).Select
セルB2から始まる範囲の2行3列目のセルであるセルD3が選択される
Range("B2:D5").Cells(4).Select
セルB2~D5の範囲の4番目のセルB3が選択される
スポンサーリンク

関連記事