セルを選択するには、選択したいセル(Rangeオブジェクト)のSelectメソッドを使います。
次のコードは、アクティブシートのセルA1を選択します。
Sub Sample1()
Range("A1").Select
End Sub
選択したいセルを特定するには、このようにRangeプロパティかCellsプロパティを使うのが一般的です。
Rangeプロパティは、セルのアドレスを引数に指定し、Cellsプロパティは行位置と列位置を表す数値を指定します。
Rangeプロパティでは、次のように複数セルを指定することも可能です。
Sub Sample2()
Range("A1:C1").Select
End Sub
上記のコードは、セル範囲A1:C1を選択します。
引数内で使用した「:」は範囲を表す演算子です。
ほかにも、共通範囲を表す演算子である半角スペースや連続しない範囲を表すカンマ(,)などを使ってセルを特定することもできます。
次のコードは、セル範囲C3:C10とセル範囲B4:D4が交差するセルC4を選択します。
Sub Sample3()
Range("C3:C10 B4:D4").Select
End Sub
実は、セルを特定するRangeプロパティに、引数は2つ用意されています。
Range(範囲の開始セル,範囲の終端セル)
それぞれの引数には、セルのアドレスを表す文字列か、セル(Rangeオブジェクト)を指定します。
次のコードは、セル範囲A1:C3を選択します。
Sub Sample4()
Range("A1", "C3").Select
End Sub
または、文字列ではなくRangeオブジェクトで指定すると、次のようになります。
Sub Sample5()
Range(Range("A1"), Range("C3")).Select
End Sub
この使い方は、For Nextステートメントで特定の範囲を操作するときに便利です。
次のコードは、セル範囲A1:D20を1行おきに塗りつぶします。
Sub Sample6()
Dim i As Long
For i = 1 To 20 Step 2
Range(Cells(i, 1), Cells(i, 4)).Interior.ColorIndex = 15
Next i
End Sub
次のように工夫すると、選択したセル範囲を1行おきに塗りつぶすのも簡単です。
Sub Sample7()
Dim i As Long, S As Long, E As Long
S = Selection(1).Column
E = Selection(Selection.Count).Column
For i = Selection(1).Row To Selection(Selection.Count).Row Step 2
Debug.Print i
Range(Cells(i, S), Cells(i, E)).Interior.ColorIndex = 15
Next i
End Sub