[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]」を省略した記述になります。
「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月」を入力しています。
次の例では、セルB3~G3に「1月」「2月」…「6月」を入力しています。
For i = 1 To 6
Cells(3, i + 1).Value = i & "月"
Next
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が選択される |
スポンサーリンク