• ベストアンサー

Offsetの関数に関して(VBA)

Offsetの使い方を教えて下さい。 どういう時に使うものなのでしょうか? 例えば以下のoffsetの分はどういう意味なのでしょうか? A = ActiveCell.Offset(0, 0).Value ご教示頂ければ幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.6

ActiveCell が基準位置(原点) Offset(x, y) が移動量になります。 x に正の値を入れると下の行のセルを参照し、負の値を入れると上の行のセルを参照します。 y に正の値を入れると右方向のセルを参照し、負の値を入れると左方向のセルを参照します。 (0,0) のセルを基準にすると、下記のように鳴ります。 [-1,-1][-1, 0][-1, 1] [ 0,-1][ 0, 0][ 0, 1] [ 1,-1][ 1, 0][ 1, 1] なので、 For i=1 to 9 For j=1 to 9 Range("A1").Offset(i-1,j-1) = i * j '下記も同じ事が出来ます。 'Cells(i,j) = i * j Next Next Offset を使うと、あるセルを基準にして、セルを相対指定する事が可能になります。 上記の例だと、"A1" を "C5" などと書き換えるだけで別の位置に表を書けます。 Cells() の場合、別の位置に表を書こうとすると、オフセット分を任意に書き加えないといけませんよね。

その他の回答 (5)

回答No.5

オフセットとは、「下駄を履かせる」のゲタに相当します。ゲタを履かせることで、xy座標上の点の平行移動なんか、簡単に実現しますね。例えば「xのオフセットは3だよ~」とやるだけでいいんですからラクチンです。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.4

#3に間違いがありました。 × 1行右に、でしたら、 ○ 1列右に、でしたら、 でした。失礼しました。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.3

書き忘れましたが、移動行、列数が"0"の場合は、 省略できます。 1行下に、でしたら、 offset(1) 1行右に、でしたら、 offset(,1) でOKです。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.2

こちら↓も参考になると思います。 http://www.sanynet.ne.jp/~awa/excelvba/kouza/chapt_02/007.html

参考URL:
http://www.sanynet.ne.jp/~awa/excelvba/kouza/chapt_02/007.html
  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

ご提示の記述は 変数Aを アクティブセルから0行0列移動したセルの値とする という意味になります。 カッコ中は、 (行数、列数) を意味し、 (1,1) ですと、1行下、1列右 という意味になります。 (-1、-1) は、1行上、1列左、になります。

関連するQ&A