はじめに
Offsetプロパティは、Range指定したセルから、選択位置を行、列方向に移動させることができます。
Range.Offset( 行方向移動量 , 列方向移動量 )
行および列の移動量に関しては、0 または空白で移動量無しとなります。
以下の例を参考にしてください。
Offsetの指定方法
Range(“C5”).Offset( , 1 ).Select C5セルから列方向に1つ移動 → D5セルを選択

Range(“C5”).Offset( 1 , 0 ).Select C5セルから行方向に1つ移動 → C6セルを選択

Cellsを使ってセルを移動
普段 Rangeと同じように使用している Cells ですが、実はRangeのプロパティでRangeから相対的に移動させる事ができます。
つまり、Offsetと同じような使い方ができます。ただ、Cells は Offsetと異なり、Cells(1,1)が基準となる点に注意が必要です。
Range(“C5”).Cells(1, 0).Select C5から列1つ逆方向に移動 → B5セルを選択

普段使っているCellsは、引数に 0 を指定する事は出来ませんが、今回はC5セルが基準となっているため 0 を指定してもエラーにはなりません。
Offsetの使いどころ
Offsetプロパティを使う事で、基準となるセルを明示的にできますので、繰り返し処理などで有効に使えます。
以下のプログラムは、B列とC列をかけた値をD列にセットしています。
Sub OffsetTest()
Dim i As Long
With Range("B3")
For i = 0 To 5
.Offset(i, 2) = .Offset(i, 0) * .Offset(i, 1)
Next i
End With
End Sub

まとめ
Offsetプロパティは、Resizeと似ています。Resizeは、行列方向に選択範囲を拡大するのに対して、Offsetプロパティは、選択を移動するという点が異なっています。
基準となる位置が明確になるという利点を生かせば、使い方によって見やすいプログラムが書けるようになります。
コメント