関数・メソッド

選択セルの範囲を相対的に指定する【Offsetプロパティ】【ExcelVBA】

構文

Range.Offset(RowOffset , ColumnOffset)

RowOffset・・・・指定したセル範囲の行の相対的な位置を指定する 【省略可能】
ColumnOffset・・ 指定したセル範囲の列の相対的な位置を指定する 【省略可能】
RangeやCellsを理解したら、セル範囲を相対的に指定するオフセットの概念を理解しましょう。

セル範囲を相対的に指定するOffsetプロパティのサンプルコード

Public Sub sample()

    '■通常のOffset
    Debug.Print Range("A1").Offset(1, 1).Address    '$B$2 A1から「下に1」「右に1」移動する
    Debug.Print Range("A1").Offset(1, 0).Address    '$A$2 A1から「下に1」「右に0」移動する
    Debug.Print Range("A1").Offset(0, 1).Address    '$B$1 A1から「下に0」「右に1」移動する
    
    '■マイナス値や省略した場合
    Debug.Print Range("C3").Offset(1).Address       '$C$4 C3から「下に1」「右に0」移動する(見づらいので1,0と指定した方がよい)
    Debug.Print Range("C3").Offset(, 1).Address     '$D$3 C3から「下に0」「右に1」移動する(見づらいので0,1と指定した方がよい)
    Debug.Print Range("C3").Offset(-1, -1).Address  '$B$2 C3から「上に1」「左に1」移動する
    
    
    '■エラーが発生するケース 実行時エラー 1004 アプリケーション定義またはオブジェクト定義のエラーです
    Debug.Print Range("A1").Offset(-1, 1).Address  'A1から左に1は移動できない
    
    '■複数セル指定した場合
    Debug.Print Range("A1:A3").Offset(1, 3).Address '$D$2:$D$4 A1:A3から「下に1」「右に3」移動した複数セル範囲

End Sub

注意点

関連記事

選択しているセルの表範囲を取得する【CurrentRegionプロパティ】【ExcelVBA】
ヘッダー行(見出し)を除いて表範囲を取得する【CurrentRegion応用】【ExcelVBA】
セルの結合は厄介?結合で実行結果が異なる【エクセルマクロ】

コメント

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