Offset の使い方

初級VBA

はじめに

 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プロパティは、選択を移動するという点が異なっています。

 基準となる位置が明確になるという利点を生かせば、使い方によって見やすいプログラムが書けるようになります。

コメント

タイトルとURLをコピーしました