【Excel VBA】基準のセルから○行△列移動したセルを参照する...Offsetプロパティ

[Excel VBA]

「セルA1の2行下1列右」というように、基準となるセルから「○行△列」移動した位置にあるセルを参照するには、RangeオブジェクトのOffsetプロパティを使用します。

スポンサーリンク

書式

Rangeオブジェクト.Offset([RowOffset], [ColumnOffset])

Rangeオブジェクトで指定したセルを基準として、引数で指定した行数と列数だけ移動した位置にあるRangeオブジェクトを返します。読み取り専用のプロパティです。

Rangeオブジェクトでセル範囲を指定した場合は、それと同じサイズのRangeオブジェクトが返されます。

引数

引数 指定 説明
RowOffset 省略可 移動する行数を指定する。下方向は正数、上方向は負数で指定する。
行を移動しない場合は「0」を指定するか、指定を省略する。
ColumnOffset 省略可 移動する列数を指定する。右方向は正数、左方向は負数で指定する。
列を移動しない場合は「0」を指定するか、指定を省略する。

使用例

引数の指定例

次のコードでは、セルC3を基準として、隣接するセルに値を入力しています。

  1. Range("C3").Offset(-1, -1).Value = "(-1,-1)"
  2. Range("C3").Offset(-1, 0).Value = "(-1, 0)"
  3. Range("C3").Offset(-1, 1).Value = "(-1, 1)"
  4. Range("C3").Offset(0, -1).Value = "( 0,-1)"
  5. Range("C3").Offset(0, 0).Value = "( 0, 0)"
  6. Range("C3").Offset(0, 1).Value = "( 0, 1)"
  7. Range("C3").Offset(1, -1).Value = "( 1,-1)"
  8. Range("C3").Offset(1, 0).Value = "( 1, 0)"
  9. Range("C3").Offset(1, 1).Value = "( 1, 1)"
  1. セルC3の 1 行上、1 列左のセルに「(-1,-1)」と入力する
  2. セルC3の 1 行上、同じ列のセルに「(-1, 0)」と入力する
  3. セルC3の 1 行上、1 列右のセルに「(-1, 1)」と入力する
  4. セルC3の 同じ行、1 列左のセルに「( 0,-1)」と入力する
  5. セルC3の 同じ行、同じ列のセルに「( 0, 0)」と入力する
  6. セルC3の 同じ行、1 列右のセルに「( 0, 1)」と入力する
  7. セルC3の 1 行下、1 列左のセルに「( 1,-1)」と入力する
  8. セルC3の 1 行下、同じ列のセルに「( 1, 0)」と入力する
  9. セルC3の 1 行下、1 列右のセルに「( 1, 1)」と入力する

メモ

引数の省略
同じ行に移動する場合は引数[RowOffset]の指定を省略できますが、引数を区切る「,」(カンマ)は必要です。例えば、同じ行の右隣のセルへ移動するには「Offset(0, 1)」または「Offset(, 1)」と記述します。
同じ列に移動する場合は引数[ColumnOffset]の指定を「,」(カンマ)ごと省略してかまいません。例えば、同じ列のすぐ下のセルへ移動するには「Offset(1, 0)」または「Offset(1)」と記述します。

単一セルを指定した場合とセル範囲を指定した場合の違い

Offsetプロパティで取得されるセルのサイズは、Rangeオブジェクトで指定したセルと同じサイズです。

単一のセルを指定した場合

Range("A1").Offset(2, 3).Select
セルA1の 2 行下 3 列右のセルを選択する(セルD3が選択される)

セル範囲を指定した場合

Range("A1:B3").Offset(2, 3).Select
セルA1~B3の 2 行下 3 列右のセル範囲を選択する(セルD3~E5が選択される)

スポンサーリンク

関連記事