ExcelVBAでセルを参照する方法は、2種類あります。
一つはRangeオブジェクト、もう一つはCellsプロパティです。
Rangeオブジェクトは、カッコの中にセルの番地である「A1」や「C8」と書きますので、Excelを使っていれば馴染みがあると思います。
Rangeオブジェクトは、セルの参照はもちろん、主に範囲指定したりする場合に使われることが多いようです。
Cellsプロパティは「行」、「列」の順で数値をカッコの中に書きます。
ループを使って、セルに対して何らかの処理をする場合や、配列を使った処理などにCellsプロパティが使われることが多いようです。
ExcelVBAでセル「A1」を選択する場合、RangeオブジェクトとCellsプロパティの使い方は下のとおりです。
ActiveSheet.Range("A1").Select
ActiveSheet.Cells(1,1).Select
結果はどちらも同じです。
個人的には、Cellsプロパティの方がよく使う気がします。
RangeからCellsへ変換する
Cellsプロパティを使うためには、「行」と「列」の情報が数値で必要になります。
あるオブジェクトの「行」情報を数値で取得するには、「Row」プロパティを使います。
また、あるオブジェクトの「列」情報を数値で取得するには、「Column」プロパティを使います。
この「Row」と「Column」を使って、RangeからCellsへ変換していきます。
Public Sub Sample()
Dim lngRow As Long
Dim lngColunn As Long
lngRow = ActiveSheet.Range("A1").Row
lngColunn = ActiveSheet.Range("A1").Column
ActiveSheet.Cells(lngRow, lngColunn).Select
End Sub
上の例ではRangeオブジェクトを使ったセル番地「A1」の行と列を数値で取得、それを変数に入れています。
「Row」プロパティと「Column」プロパティの使い方が重要です。
その変数を使って、Cellsプロパティのカッコ内に行と列を指定しています。
こうすると、RangeオブジェクトからCellsプロパティへの変換ができます。
変数を使うと煩わしいので下のようなコードにすると、もっとスッキリします。
Public Sub Sample()
With ActiveSheet
.Cells(.Range("A1").Row, .Range("A1").Column).Select
End With
End Sub
Withブロックを使い、見やすくするとともに、「Row」プロパティ、「Column」プロパティを直接Cellsプロパティのカッコ内で指定してしまっています。
ちょっとした工夫でグッとコードが読みやすくなります。
CellsからRangeへ変換する
CellsからRangeへ変換する場合は、Addressプロパティを使います。
Addressプロパティはセルの番地を取得するプロパティです。
下の記事で詳しく解説していますので、そちらもご覧ください。

Public Sub Sample()
Dim strAddress As String
strAddress = ActiveSheet.Cells(1, 1).Address
ActiveSheet.Range(strAddress).Select
End Sub
上の例では、まずAddressプロパティを使ってセルの番地「A1」を文字列変数に入れています。
実際には、変数「strAddress」には「$A$1」という文字列が入っています。
そして、変数「strAddress」を使って、Rangeオブジェクトでセルを選択しているというわけです。
変数を使わないでコーディングすると下のようになります。
Public Sub Sample()
With ActiveSheet
.Range(.Cells(1, 1).Address).Select
End With
End Sub
範囲指定する場合は下のように書くとよいでしょう。
Public Sub Sample()
With ActiveSheet
.Range(.Cells(1, 1).Address & ":" & .Cells(5, 5).Address).Select
End With
End Sub
こうすると、セル「A1」からセル「E5」までが範囲選択された状態になります。
ExcelVBAでマクロを作っているとRangeオブジェクトだと都合が悪かったり、Cellsプロパティだと都合が悪かったりする時があります。
そんな時は、うまく臨機応変にRangeオブジェクトとCellsプロパティを互いに変換させて壁を乗り越えていきましょう。