VBAでセル指定する場合は、「Cells」というプロパティを使用する。
セルの範囲指定する場合は、「Range」というオブジェクトを使用する。
これらの使い方について調べてみた。
Cellsプロパティ
Cellsプロパティは、第1引数が行番号(ROW)、第2引数が列番号(COLUMN)を指定する。
以下のようにすると、1行目・1列目であるセル「A1」の値を取得できる。
'セル「A1」の値 Cells(1, 1)
Rangeオブジェクト
Rangeオブジェクトは、「A1」のようにセルのアドレスを指定する。
以下のようにすると、セルアドレス「A1」の範囲オブジェクトを取得できる。
'セル「A1」の範囲 Range("A1")
また、セルのアドレス2つを「:」(コロン)で繋ぐと、その範囲の範囲オブジェクトを取得できる。
'セル「A1」から「C10」までの範囲 Range("A1:C10") '列「A」全範囲 Range("A:A") '行「1」全範囲 Range("1:1")
同様に、第1引数と第2引数で、始まりのセルと終わりのセルをそれぞれ指定すれば、その範囲オブジェクトを取得することができる。
'セル「A1」から「C10」までの範囲 Range("A1", C10") 'セル「A1」から「C10」までの範囲(「.Address」はなしでもOK) Range(Cells(1, 1).Address, Cells(10, 3).Address)
よく使用するのは、範囲選択する場合や、範囲内のセル値をクリアする場合かと思う。
使い方は、以下のようにする。
「Select」メソッドを使用して、範囲選択できる。
「ClearContents」メソッドを使用して、範囲内のセル値をクリアできる。
'セル「A1」から「C10」までの範囲選択 Range("A1:C10").Select 'セル「A1」から「C10」までの範囲のクリア Range("A1:C10").ClearContents
VBAでのCellsとRangeの使い方
Cellsプロパティでセルを指定し、値を取得する場合は行番号、列番号が必要になる。
しかし、多くの場所でその行番号、列番号をその都度数字で指定していると、もし行・列を追加することになったら大変です。
なので、必要なセルの行番号、列番号は定数で指定しておく方がよい。
そうすることで、修正箇所を定数の値のみにできるからです。
また、Rangeオブジェクトで範囲選択する場合は、引数2つで始まりのセルと終わりのセルを指定する方法が便利です。
用意したセルの行番号、列番号だけで、「A1」などのセルアドレスをわざわざ指定する必要がないからです。
'定数 Const NO_ROW = 1 Const NO_COL = 2 Const DETAIL_ROW_START = 2 Const DETAIL_COL_START = 2 Const DETAIL_ROW_END = 10 Const DETAIL_COL_END = 5 'Noセルの取得 Cells(NO_ROW, NO_COL) '明細のクリア Range(Cells(DETAIL_ROW_START, DETAIL_COL_START), _ Cells(DETAIL_ROW_END, DETAIL_COL_END)).ClearContents
以上。
コメント