Cellsプロパティ ・ Offsetプロパティ
前のページでは、セルをVBAでセルを指定する方法として「Rangeプロパティ」を学びました。
VBAでセルを指定する方法には、Rangeプロパティ以外にも次の2つの方法があります。
「Cellsプロパティ」
「Offsetプロパティ」
VBAでセルを指定するコードは全てのコードの基本中の基本となるものなので、しっかりと理化しておきましょう。
Cellsプロパティとは
Cellsプロパティとは、1つのセルを指定する場合に、そのセルを行・列とも”数字”で指定するとうプロパティです。
Rangeプロパティでは、「B2」のセルを指定する場合は、そのまま「Range("B2")」と記述してやるだけでした。
これが、Cellsプロパティになると「Cells("2,2")」と記述してやる必要があるわけです。
つまり、エクセルのワークシート上で
A、B、C、D、E、F ・・・
と表示されている”列”の表示を、そのまま数字の順番に置き換えて
1、2、3、4、5、6、7 ・・・
と変更してコードに記述してやる必要があるわけです。
また、Rangeプロパティでは()の中にそのままセルの情報を記述すればOKでしたが、
Cellsプロパティでは「行」「列」ともに数字で記述するので、それぞれを ,(コンマ)で区切って
やる必要がある点も忘れてはいけません。
具体的な例を見て理解を深めてください。
<例:C4のセルを指定する場合>
<VBAコード記述方法>
Rangeプロパティ ⇒ Range("C4")
Cellsプロパティ ⇒ Cells("3,4")
※Rangeプロパティは「エクセルのシートに見えたまま記入」、Cellsプロパティは「行・列ともに
数字で記入」と覚えておきましょう!
Offsetプロパティとは
Offsetプロパティとは、基準となるセルを指定し、そこからの位置関係を指示することでセルを指定するプロパティです。
言葉だけでは理解しにくいので、例を見ながら学習していきましょう。
例えば、「E8」のセルをVBAを使って指定したい場合は、
Rangeプロパティを使えば ⇒ Range("C4")
と記述することで、それを表現することが出来ます。
しかし、VBAでは直接、指定したいセルの「行」「列」をコードに記述しなくても、他のセルから見た相対的な位置関係でセルを指定することが可能です。
「E8」のセルを基準に考えると、「C4」は上に4つ、左に2つ動いたセルになります。
こういった場合、RangeプロパティとOffsetプロパティを組み合わせて、「C4」のセルを
Range("E8").Offset(-4.-2)
と表現することも可能です。
※RangeプロパティとOffsetプロパティの間に . (ピリオド)が必要な点もしっかりと注意!
Offsetプロパティで処理する際は、基準になるセルから考えて、
行の場合は下側に動くのがプラス(+)、上側に動くのがマイナス(-)
列の場合は右側に動くのがプラス(+)、左側に動くのがマイナス(-)
とコードを記述します。これだけ覚えておけば、Offsetプロパティで困ることはありません。
エクセルを使ったVBAのプログラミングでは、このように「基準となるセル」からの位置関係を指定する処理が頻出します。
実用的なVBAプログラミングをするようになると、Offsetプロパティ無くしては、まともがVBAコードが書くことが出来ないことに気が付くはずです。
そのため、Offsetプロパティはしっかりと理解しておきましょう。
以上で、VBAコードでのセルの指定方法は終了です。
セルの指定はVBAでプログラミングをする際に絶対に避けては通れない内容なので、分からないところがある場合は全てが理解できるまで徹底的に復習してください。
次のページでは、セルの中に入力されている値を調べる「Valueプロパティ」について学びます。