VBA(Visual Basic for Applications)でセルやセル範囲を表すために使用されるオブジェクトをRangeオブジェクトといいます。
Rangeオブジェクトを取得するRangeプロパティとCellsプロパティ、Selectionプロパティ、ActiveCellプロパティでセルを参照する方法を説明します。
Rangeプロパティ
単一セルを参照
まずは、Rangeプロパティで単一セルを参照する方法を見てみましょう。
以下の例は、ExcelのA1セルに「おはよう」という文字を格納するRangeプロパティです。
マクロコードを入力する方法は、「【Excel VBA入門】マクロコードの入力と実行」を参考にしてください。
Sub Test()
Range("A1").Value = "おはよう"
End Sub
マクロを実行すると以下のようになります。
ひとつのセルに文字を入れるには、以下のように入力します。
Range(“セルの番地“).Value = “入力文字”
複数のセルを参照
次に複数セルを参照する方法を見てみましょう。
以下の例は、ExcelのA1セルからB2セルまでに「おはよう」という文字を格納するRangeプロパティです。
Sub Test()
Range("A1:B2").Value = "おはよう"
End Sub
マクロを実行すると以下のようになります。
連続した複数のセルに文字を入れるには、コロン(:)で区切ります。
Range(“先頭セルの番地:最終セルの番地“).Value = “入力文字”
A1セルとB2セルにのみ、文字を入れるには、カンマ(,)で区切ります。
Range(“A1,B2“).Value = “入力文字”
列全体を参照
以下の例は、ExcelのA列全体に「おはよう」という文字を格納するRangeプロパティです。
Sub Test()
Range("A:A").Value = "おはよう"
End Sub
行全体を参照
以下の例は、Excelの1行目全体に「おはよう」という文字を格納するRangeプロパティです。
Sub Test()
Range("1:1").Value = "おはよう"
End Sub
名前付き範囲のセルを参照
Excelでは、ある範囲のセルに名前を付けて、関数のセル指定時に利用することができます。
以下の例は、ExcelのA1セルからA2セル範囲に「挨拶」という名前をつけ、そこに「おはよう」という文字を格納するRangeプロパティです。
Sub Test()
Range("A1:A2").Name = "挨拶"
Range("挨拶").Value = "おはよう"
End Sub
マクロを実行すると以下のようになります。
名前付き範囲のセルに文字を入れるには、以下のように入力します。
Range(“名前付き範囲のセル名“).Value = “入力文字”
Cellsプロパティ
単一セルを参照
それでは、Cellsプロパティで単一セルを参照する方法を見てみましょう。
以下の例は、Excelの行番号1、列番号1のセルに「おはよう」という文字を格納するCellsプロパティです。
Sub Test()
Cells(1, 1).Value = "おはよう"
End Sub
マクロを実行すると以下のようになります。
ひとつのセルに文字を入れるには、以下のように入力します。
通常、セルの指定は「A1」のように、列、行の順であるため、指定順が逆となりますので注意してください。
Cells(行番号,列番号).Value = “入力文字”
指定された範囲でのセルの参照
Cellsプロパティに比べ、Rangeプロパティの方がさまざまな範囲選択が可能ですが、Cellsプロパティにしかできないことがあります。
選択されている範囲の中からセルを選択することができます。
以下の例は、1行目でExcelのA2からB3までのセルを選択します。
2行目は、選択されている範囲の1行2列目のセルに「おはよう」という文字を格納するCellsプロパティです。
Sub Test()
Range("A2:B3").Select
Selection.Cells(1, 2).Value = "おはよう"
End Sub
マクロを実行すると以下のようになります。
Selectionプロパティ(選択されたセルを参照)
「Cellsプロパティ」の例として説明しましたが、Selectionとは、選択されたセルを表します。
以下の例は、1行目でExcelのA2からB3までのセルをSelectメソッドで選択します。
2行目は、選択されているセルに「おはよう」という文字を格納するプロパティです。
Sub Test()
Range("A2:B3").Select
Selection.Value = "おはよう"
End Sub
マクロを実行すると以下のようになります。
ActiveCellプロパティ(現在アクティブなセルを参照)
ActiveCellプロパティは、現在アクティブなセルを表すプロパティです。
以下の例は、1行目でExcelのA2のセルをActivateメソッドでアクティブセルにします。
2行目は、アクティブセルに「おはよう」という文字を格納するプロパティです。
Sub Test()
Range("A2").Activate
ActiveCell.Value = "おはよう"
End Sub
マクロを実行すると以下のようになります。