サイトについて      連絡先   検索

VBA セルの位置を取得する

はじめに

Excel VBA マクロのセルの位置を取得する方法を紹介します。

Range の Row, Column プロパティからセルの行番号と列番号を取得できます。Cells からその位置のセルを取得できます。

Address プロパティからセル名(番地)を取得できます。

  • 目次
    • セルの位置を取得する
    • セルの範囲の位置を取得する

セルの位置を取得する

Range の引数にセル名を指定すると、そのセルの位置を取得できます。

セル「B3」の位置を行番号と列番号を取得するにはRange("B3").RowまたはRange("B3").Columnを入力します。

そのセル名を取得するにはRange("B3").Addressを入力します。絶対参照で取得します。


Dim l As Long
l = Range("B3").Row    ' 3
l = Range("B3").Column ' 2
Debug.Print(l)

Dim s As String
s = Range("B3").Address ' "$B$3"
Debug.Print(s)

Cells の引数にセルの行と列の番号を指定すると、そのセルの位置を取得できます。

行「2」、列「A」の行番号と列番号を取得するにはCells(2, 1).RowまたはCells(2, 1).Columnを入力します。


Dim l As Long
l = Cells(2, 1).Row    ' 2
l = Cells(2, 1).Column ' 1
Debug.Print(l)

Dim s As String
s = Cells(1, 1).Address) ' "$A$1"
s = Cells(2, 1).Address) ' "$A$2"
s = Cells(1, 2).Address) ' "$B$1"
s = Cells(2, 2).Address) ' "$B$2"
Debug.Print(s)

Cells は指定したセルを基点にして、そこから指定した行や列の位置にあるセルを取得できます。


Dim s As String
' セル「B2」を基点にする
s = Range("B2").Cells(1, 1).Address ' $B$2
s = Range("B2").Cells(2, 1).Address ' $B$3
s = Range("B2").Cells(1, 2).Address ' $C$2
Debug.Print(s)

アクティブセル

アクティブなセルの位置を取得するにはActiveCellを入力します。


Dim l As Long
l = ActiveCell.Row
l = ActiveCell.Column

Dim s As String
s = ActiveCell.Address

選択セル

選択されているセルの位置を取得するにはSelectionを入力します。範囲選択されているときは、左上の位置を取得します。Address はその範囲を取得します。


Dim l As Long
l = Selection.Row
l = Selection.Column

Dim s As String
s = Selection.Address

セルの範囲の位置を取得する

セルの範囲「B2」~「D4」の位置を取得するにはRange("B2:D4").RowまたはRange("B2", "D4").Columnを入力します。左上の位置を取得します。

行数と列数を取得するにはRange("B2:D4").Rows.CountまたはRange("B2", "D4").Columns.Countを入力します。


Dim l As Long
l = Range("B2:D4").Row           ' 2
l = Range("B2:D4").Rows.Count    ' 3
l = Range("B2:D4").Column        ' 2
l = Range("B2:D4").Columns.Count ' 3
Debug.Print(l)

Dim s As String
s = Range("B2:D4").Address ' $B$2:$D$4
Debug.Print(s)

範囲選択しているセルの隅の位置を取得するには次のようにします。

1

Dim c As Range

' 左上 "$B$2"
Set c = Cells(Selection.Row, Selection.Column)
' 左下 "$B$4"
Set c = Cells(Selection.Row + Selection.Rows.Count - 1, Selection.Column)
' 右上 "$D$2"
Set c = Cells(Selection.Row, Selection.Column + Selection.Columns.Count - 1)
' 右下 "$D$4"
Set c = Cells(Selection.Row + Selection.Rows.Count - 1, Selection.Column + Selection.Columns.Count - 1)

Debug.Print(c.Address) ' $B$2:$C$4
  • 目次
    • セルの位置を取得する
    • セルの範囲の位置を取得する