これだけはおさえるセル操作(1)−Offsetで自由自在
セル(範囲)に関する基本事項で、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メソッドで検索し、検索されたセルの右隣へ指定の
値を書き込む、などということも可能となるのです。

Excel97/2000



戻る


Excel Word Access VBA! モーグ