セルの選択
セルの選択はRangeオブジェクトのSelectメソッドやActivateメソッドで行います。SelectとActivateの違いについては「VBAのSelectとActivateの違い」を参照ください。
RangeオブジェクトはRangeプロパティやCellsプロパティや[]で取得します。
Cellsプロパティは単一セルの選択しかできませんが、Rangeプロパティは単一セルだけでなく複数セルの選択も可能です。
単一セルを選択する
Rangeプロパティで単一セルを選択
Rangeプロパティで単一セルを選択する場合は以下のように書きます。
1 2 3 4 |
Sub Range1Test() Range("A1").Select Range("B2").Activate End Sub |
この例では、A1セルを選択し、次にB2セルを選択します。
Cellsプロパティで単一セルを選択
Cellsプロパティは単一セルの選択時にのみ利用できます。
引数に行(縦)、列(横)の順に指定します。
1 2 3 4 |
Sub Cells1Test() Cells(2, 1).Select Cells(3, 2).Activate End Sub |
この例では、A2セルを選択し、次にB3セルを選択します。
複数セルを選択する
Cellsプロパティでは複数セルは選択できません。Rangeプロパティを利用します。
Rangeプロパティで複数セルを選択する場合はいくつかの書き方があります。
9行目のように範囲選択をCellsプロパティで指定することもできます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Sub Range2Test() On Error Resume Next '// 単一セルを複数選択 Range("A1,E1").Select '// 範囲選択(どの書き方もOK) Range("A1:E5").Select Range("A1", "E5").Select Range(Cells(1, 1), Cells(2, 3)).Select '// 範囲指定を複数選択 Range("A1:B2,C3:D4").Select '// 列(横)選択 Range("A:B").Select '// 行(縦)選択 Range("1:4").Select '// 名前付きセル選択 Range("テスト").Select End Sub |
[]で選択する
[]を使ってセルの選択が可能です。使い方はRangeプロパティとほぼ同じで、違いはダブルクォーテーションがあるかないかです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Sub Range3Test() On Error Resume Next Dim r As Range '// 単一セル選択 [A5].Select '// 行選択 [1:3].Select '// 列選択 [A:C].Select '// 範囲選択 [A1:B3].Select '// 複数の範囲選択 [A1:B1,A3:D4].Select '// 名前付きセル範囲を選択 [テスト].Select '// Rangeオブジェクトを取得 Set r = [A1] End Sub |