2017年01月10日

セルの結合とOffset(エクセルVBA)

ついつい陥りやすいミスです。
私も失敗しました。
 

シート上に、10枚つづりのラベルシールとか、
同じフォーマットが複数ある場合、
常套として使用したいのがOffsetですね。

基準となるセルをARangeとすると、
ARange.Offset(0,0)は、ARangeそのものを
ARange.Offset(0,1)は、一つ隣りのセルを
ARange.Offset(1,0)は、 一つ下のセルを差しますね。

一般的にはARangeは単独のセルを設定する事が多いので、
戸惑う事は少ないと思いますが。

実は、ARangeで設定しているセルが、セルの結合をしている状態の場合は、
注意が必要です。

例えば、ARangeにCells(1,1)を設定したとして、
その Cells(1,1)が実は、Cells(2,3)までセルの結合をしていたとします。
この場合、Offsetの基準になるのは、セル結合をしている、
最後の列 および最後の行となます。
つまりこの場合ですと、
ARange.Offset(0,1)は、Cells(1,4)を
ARange.Offset(1,0)は、Cells(3,1)を
差します。

上の状態でARange.Offset(0,1)が、Cells(1,2)だったら
セルの結合がされている中を差してしまいますから、
そうはならないという事ですよね。

離れた、セルを差したい場合など、
どの位置からOffsetを数えるのか、
注意が必要ですね。

トラックバックURL

コメントする

名前
URL
 
  絵文字