
Excel VBAベーシック受験に向けて⑫複数セル(セル範囲)、可変データの操作
セル範囲A1:C3を指定するときはRange("A1:C3")と記述することが多いが、Rangeには別の書き方がある。
Range(セル範囲の左上のセル, セル範囲の右下のセル)
という書式があり、Range("A1:C3")は次のようにも記述できる。
Range(Range("A1"), Range("C3"))
Range(Cells(1, 1), Cells(3, 3))
例
下図で項目名を残してB列のデータだけをクリアする操作を考える。
操作のセル範囲はB2:B5だが、実務ではデータの量が毎回同じとは限らないため、最下セルは都度異なってくる。

「Range(セル範囲の左上のセル, セル範囲の右下のセル)」で考えると、左上のセルは、セルB2。
ここまでをRangeで表すと、「Range(Range("B2"), 右下セル」となる。
右下セルは、Endモードを使うと「セルB1からEndモードで下に向かって移動して行きつくセル」と考えることができる。
Endモードを使うと右下セルは「Range("B1").End(xlDown)」と書くことができる。
これを右下セルに当てはめると、次のように書くことができる。
Range(Range("B2"), Range("B1").End(xlDown))
これで、B列のデータ範囲が特定できる。
データをクリアするには、ClearContentsメソッドを使う。
Sub Macro1()
Range(Range("B2"), Range("B1").End(xlDown)).ClearContents
End Sub
