単体のセルを表すRangeオブジェクトを参照します。Objectにはワークシートを指定
します。Rangeプロパティと同じく、Objectの指定を省略したときにはアクティブシー
トが対象となります。Row、Colは、それぞれワークシートでの行、列の座標になります。
構文 Object.Cells(Row, Col) 取得のみ
設定項目 内容
Object Application,Worksheet,Rangeオブジェクト [省略可能]
Row 対象セルの行を表す整数[省略可能]
Col 対象セルの列を表す整数[省略可能]
次のサンプルは引数を2つとも指定した場合の例です。
●サンプル1●
Sub CellsSamp1()
Dim i As Integer
'----変数iの値が1〜5の範囲で変化します
For i = 1 To 5
'----(1)Objectがシートの場合
Cells(2, i).Value = i
'----(2)ObjectがRangeの場合
Range("A4:B5").Cells(i, i).Value = i * 100
Next i
Range("A4:B5").Select
End Sub
(1)のステートメントではObjectを指定していませんから、対象はアクティブシートに
なります。2行目、i列のセルに対して、1から5までの値を入れていきます。(2)のステー
トメントでは、ObjectがRangeオブジェクトになっています。この場合、指定されたセル
範囲の左上のセル=A4の位置を基準に座標が振りなおされます。セル範囲の広さには影響
を受けません。サンプルで示したように、ループ処理の中で参照先セルを変えていくよう
な場合に便利です。
●注意●
Row引数は1〜65,536、Col引数は1〜256までの値で設定しなくてはなりません。この理由
は、勿論、その範囲を超える番地にはセルが存在しないからです。もし、超えた値を指定
した場合にはエラーが発生します。
引数を1つしか指定しない場合、A1から列方向にインデックスが振られます。
●サンプル2●
Sub CellsSamp2()
Cells(256 * 0 + 1) = 1
'----256で1行目終わり、2行目へ
Cells(256 * 1 + 2) = 2
'----256×2で2行目終わり、3行目へ
Cells(256 * 2 + 3) = 3
End Sub
上記のサンプルを実行すれば、列方向に順に参照していっていることがわかります。なお、
ObjectにRangeオブジェクトを指定した場合の動作は、引数を2つ指定した時とは異なります
ので注意が必要です。次のサンプルを見てください。
●サンプル3●
Sub CellsSamp3()
Dim i As Integer
'----変数iの値が1〜10の範囲で変化します
For i = 1 To 10
'----A1〜B3の列数=2
Range("A1:B3").Cells(i).Value = i
Next
Range("A1:B3").Select
End Sub
実行結果を見ればわかりますが、指定したRangeオブジェクトの列数をキーにして、イン
デックスを振っています。
また、Rangeプロパティとの組み合わせで、両プロパティの特徴を活かしたプログラミン
グが可能です。
●サンプル4●
Sub CellsSamp4()
Dim i As Integer
i = 5
Range(Cells(1, 1), Cells(i, i)).Value = "ABC"
End Sub
変数iの値に応じて、セルA1と変数iで指定されるセルに囲まれたセル範囲に"ABC"と
いう値を入力しています。なお、アクティブシート以外を対象にこのような処理を記述
する場合には、注意が必要です。例えば、"ABC"の入力先がアクティブでない"Sheet3"で
ある場合、次のステートメントではエラーとなります。
Worksheets("Sheet3").Range(Cells(1, 1), Cells(i, i)).Value = "ABC"
意図した動作にするには、次のように記述します。Cellsプロパティの前に「.」がつ
いていることに注目してください。
With Worksheets("Sheet3")
.Range(.Cells(1, 1), .Cells(i, i)).Value = "ABC"
End With
このように記述することで、Cellsプロパティは"Sheet3"を参照するようになります。
●ポイント●
引数に何も指定しない場合、Objectがワークシートの時には、ワークシートの全セル
を参照します。シートの全てのセルを対象に操作をしたい場合には、Rangeプロパティ
ではなくCellsプロパティを使用してください。
|