セル(範囲)に関する基本事項で、RangeとCellsをマスターしたら、Offsetの使い方を
ぜひおさえてください。
【基礎編】
Offsetは簡単にいえば、セル(範囲)の移動です。
使い方 ⇒ Offset(行方向、列方向)
例えば・・・
1. ActiveCell.Offset(1, 0).Select
このコードはアクティブセルから行方向に1、つまり1つ下のセルを選択します。
また、移動しない方向については省略可能ですから・・・
2. ActiveCell.Offset(1).Select
でも同じです。
下方向へ1つ移動の指定がOffset(1, 0)であるならば、上方向へはどうするのでしょうか?
答えは素直に考えて、− (マイナス)表記にします。
ActiveCell.Offset(-1, 0).Select
今度は2のActiveCellをSelectionに置き換えてみましょう。
3. Selection.Offset(0, 2).Select
これは選択範囲を列方向に2、つまり右側へ二列選択範囲をずらします。このとき、
SelectionがセルA1からD5までのせる範囲をあらわしているとすれば、次のように
書くことができます。
4. Range("A1:D5").Offset(0, 2).Select
⇒ 実行結果は”セルC1からF5までのセル範囲を選択します。
【応用編】
1から4でOffset(行方向、列方向)の指定の仕方がわかったら、今度はRangeの使い方の
基本と組み合わせて使ってみます。
Rangeは、Range("A1") や Range("A1:D5")のような使い方のほか・・・
Range(左上端、右下端) ※左上端、右下端ともにセル、もしくはセル範囲
というように、引数として2つのセル、またはセル範囲を指定することでセル範囲を
あらわすことができました。これをOffsetと組み合わせて使う方法を検討します。
5.アクティブセルから右方向へ5行までのセル範囲を結合する
Range(ActiveCell, ActiveCell.Offset(0, 5)).Merge
このコードはアクティブセルがA1であったとすると、A1からF1までのセルを結合
していることになります。
6.選択範囲の拡張
Range(Selection, Selection.Offset(1, 0)).Select
選択範囲を一行下まで拡張します。セル範囲がB5からE10までのセル範囲であった
とすれば、B5からE11までに拡張したことになります。
7.6と同じ考え方で、例えばデータ入力シートに名前を付けられたセル範囲があったと
します。データ入力をするのですから当然範囲を拡張しなければならないケースが出て
くるでしょう。このようなときでも記述が変わるだけで上のコードと考え方は変わりま
せん。セル範囲につけえられた名称が”データ”で、名前の範囲を5行拡張する場合・・・
Range(Range("データ"), Range("データ").Offset(5)).Name = "データ"
となります。
ここまでの知識を応用すれば、さまざまなことができますが、Rnageオブジェクトのプロパ
ティーやメソッドなどをマスターすることにより、より高度なことを行うことができるよう
になります。例えば、特定の値をFindメソッドで検索し、検索されたセルの右隣へ指定の
値を書き込む、などということも可能となるのです。
|