[VBA] Offsetプロパティでセルを相対参照します

 はい! いつも明るく楽しい言葉の妖精さんの VBA 講座です!
 今日は Offsetプロパティでセルを相対参照する 方法について学びますよ。簡単なマクロばかりだけど何事も基本が大切ですから、ゆめゆめおろそかにしないでくださいな~。

Offsetプロパティでセルを相対参照して位置をずらしましょう

 まずは 相対参照 について簡単に説明しておきますよ。名前は厳めしいけど、別に難しいものではありません。VBA を使わなくても Excel で多用される概念だから「そんなの知ってるよ!」て人はここを読み飛ばしてくださいな。普通は Excel でセルを指定するときに、"B3" とか "G11" のように、行をアルファベット、列を数字で表しますね。つまりワークシート全体の中でどの位置にあるかってことを指定するのです。この普通の指定方法を 絶対参照 という、これまた物々しい名前で呼んだりするのです。それに対して相対参照は、あるセルを自分で勝手に選んで、そこを基準に下方向(行方向)と、右方向(列方向)にそれぞれいくつ動いたかを指定するやりかたなのです。

Offsetプロパティ

 Offsetプロパティ

Offset(y,x)

という形で記述します。y は行方向(下方向)、x は右方向(列方向)への移動距離を表します。たとえばユーザーさんが適当に選んだセルを基準に下方向(行方向)に 2 つ、右方向(列方向)に 3 つだけ移動した場所を選択するには

 Sub ChangePosition1()

  Selection.Offset(2, 3).Select

 End Sub

のように書きます。セル B2 を選んだ状態でこのマクロを実行すると、セル E4 が選択されます。

 Offsetプロパティでセルを相対参照①

 上方向や左方向に移動させる場合は引数に負の数を指定します。たとえばセル C5 を基準に上に 2 つ、右に 2 つ移動させる場合は次のようなマクロを書きます。

 Sub ChangePosition2()

  Range("C5").Offset(-2, 2).Select

 End Sub

 このマクロを実行するとセル E3 が選択されます。

 Offsetプロパティでセルを相対参照

 今度は選択範囲から下に 2 つずれた所にデータを入力するマクロです。

 Sub ChangePosition3()

  Selection.Offset(2, 0).Value = "KOBATO"

 End Sub

 適当な範囲を選択して、これを実行すると KOBATO がずらずらと並びますよ~。

 VBAのOffsetプロパティで位置をずらして文字を書き込みます

 え? こんな鬱陶しいマクロを作るな? こばとの勝手でしょ!
 

引数は省略できるけど ......

 あ、そうそう。あと最後にひとつだけ。Offsetプロパティは引数を省略した書き方もできます。たとえばセル C5 を基準に行方向(下方向)に 3 つ動かすけど、右方向(列方向)には動かさないよってときには

Range("C5").Offset(3, 0).Select

と書きますけど、列方向の引数を省略して

Range("C5").Offset(3).Select

と書きます。また、行方向(下方向)には動かさないけど、右方向(列方向)に 3 つ動かしたいってとき、

Range("C5").Offset(0, 3).Select

と書くところを

Range("C5").Offset(, 3).Select

のようにしてもかまわないけど ...... 何か見た目が悪いし、他人が読みにくいし、こばと的にはこういう省略はなるべくしないほうがいいと思います。まあ好みの問題ですけどね~。 ≫ VBA 辞典に Go!

スポンサードリンク
末尾大型広告
末尾大型広告

コメントをどうぞ

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)