セルを参照するにはRangeオブジェクトを利用する
セルの参照にはRangeオブジェクトを利用します。
そのRangeオブジェクトの各種プロパティやメソッドを利用して、セルの情報取得や操作を行います。
Rangeオブジェクトの取得
RangeオブジェクトはWorksheetオブジェクトのRangeプロパティかCellsプロパティで取得します。
以下はRangeオブジェクトの取得例です。
1 2 3 4 5 6 7 8 9 10 |
Sub GetRangeTest() Dim r1 As Range Dim r2 As Range Set r1 = ActiveSheet.Range("B2") Set r2 = ActiveSheet.Cells(2, 2) ActiveSheet.Range("A1").Value = r1.Address ActiveSheet.Range("A2").Value = r2.Address End Sub |
Rangeオブジェクト変数のr1とr2にそれぞれRangeとCellsで取得していますが、どちらも参照しているセルは同じです。
セルの指定
上記のようにRangeオブジェクトを取得したあとに、セルの指定を行います。
セルを指定するにはCells、Range、[]、Cellsインデックス、などいくつかの方法があります。
セルの指定したあとには各種メソッドやプロパティがあるのでここではValueプロパティでの例にします。
1 2 3 4 5 6 |
Sub ReferCellTest() Cells(1, 1).Value = "a1" Range("B2").Value = "b2" [C3].Value = "c3" Range("D4:E5").Cells(1).Value = "d4" End Sub |
4番目のCellsのインデックスは、セル範囲のインデックスを利用しています。
インデックスはセル範囲の左上から右下に向かって1から順に番号が振られています。
Zの形で番号が振られており、同じ行を左から右に向かって番号が振られ、一番右のセルの次は次の行の一番左から次の番号が振られていきます。
選択セルの参照
セルの選択範囲を上記の通り指定したあとは、そのセル範囲を参照します。
参照にはSelectionプロパティとActiveCellプロパティを利用します。
1 2 3 4 5 6 7 8 9 10 |
Sub SelectionActiveCellTest() Dim r As Range Range("A1:C3").Select For Each r In Selection r.Activate ActiveCell.Value = r.Address Next End Sub |
Selectionプロパティは直前に選択されたセル範囲が参照対象になります。
A1からC3セルを選択して、選択セルをループし、各セルを選択したあとにセルの値にセル座標を入力しています。
SelectとActivateの違いについては「VBAのSelectとActivateの違い」を参照ください。