教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA セル操作】アクティブセルのアドレスを取得(Row・Column)するにはどうすればいいの?教えて!

構文

構文は以下の通りです。

アクティブセルの行番号を取得
ActiveCell.Row

解説

現在アクティブになっているセルの行番号を取得するプロパティです。行番号は整数型(Integer)で返されます。

アクティブセルの列番号を取得
ActiveCell.Column

解説

現在アクティブになっているセルの列番号を取得するプロパティです。列番号も整数型(Integer)で返されます。

使い方

以下に、具体的な使い方を紹介します。

1.セルの位置情報を変数に代入する例

現在アクティブなセルの位置情報(行番号と列番号)を変数に代入します。

Dim rowNumber As Integer
Dim columnNumber As Integer
rowNumber = ActiveCell.Row
columnNumber = ActiveCell.Column

2.セルの位置情報を活用して処理を行う例

現在アクティブなセルの位置情報を利用して、特定の操作や処理を行います。

Dim rowNumber As Integer
Dim columnNumber As Integer
rowNumber = ActiveCell.Row
columnNumber = ActiveCell.Column
' 現在のセルの位置に応じた処理を実行する
If rowNumber = 1 And columnNumber = 1 Then
    ' セルA1の場合の処理
    MsgBox "セルA1が選択されました。"
ElseIf rowNumber = 2 And columnNumber = 2 Then
    ' セルB2の場合の処理
    MsgBox "セルB2が選択されました。"
Else
    ' その他のセルの場合の処理
    MsgBox "その他のセルが選択されました。"
End If

3.セル範囲の指定に行番号と列番号を使用する例

行番号と列番号を利用して、特定のセル範囲を指定します。

Dim startRow As Integer
Dim startColumn As Integer
Dim endRow As Integer
Dim endColumn As Integer
startRow = 1
startColumn = 1
endRow = 5
endColumn = 3
' セル範囲を指定して値を取得
Dim dataRange As Range
Set dataRange = Range(Cells(startRow, startColumn), Cells(endRow, endColumn))
' セル範囲の値を表示
MsgBox "セル範囲 " & dataRange.Address & " の値は: " & dataRange.Value

プログラミング例

以下に、具体的なプログラミング例を幾つか紹介します。

1.セルの行番号と列番号を表示する例

現在アクティブなセルの行番号と列番号をメッセージボックスで表示するプログラムです。

Sub ShowCellPosition()
    Dim rowNumber As Integer
    Dim columnNumber As Integer
    rowNumber = ActiveCell.Row
    columnNumber = ActiveCell.Column
    MsgBox "現在のセルの位置は、行: " & rowNumber & " 列: " & columnNumber & " です。"
End Sub

2.特定のセルに値を代入する例

現在アクティブなセルの行番号と列番号を取得し、特定のセルに値を代入するプログラムです。

Sub SetValueToCell()
    Dim rowNumber As Integer
    Dim columnNumber As Integer
    Dim targetCell As Range
    rowNumber = ActiveCell.Row
    columnNumber = ActiveCell.Column
    ' 現在のセルから1行下、2列右のセルを取得
    Set targetCell = Cells(rowNumber + 1, columnNumber + 2)
    ' セルに値を代入
    targetCell.Value = "Hello, World!"
    MsgBox "セル " & targetCell.Address & " に値を設定しました。"
End Sub

この例では、現在アクティブなセルから1行下と2列右のセルを取得し、そのセルに値を代入しています。

まとめ

ActiveCell.RowとActiveCell.Columnは、現在アクティブなセルの行番号と列番号を取得するための便利なプロパティです。行番号や列番号を取得することで、より効率的な処理や自動化が可能になります。是非活用してください。