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

VBA セルの位置を取得する

はじめに

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

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

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

セルの位置を取得する

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

セル「A1」の位置を行と列番号で取得するには Range("A1").Row, Range("A1").Column のように指定します。

Dim l As Long
l = Range("A1").Row    ' 1
l = Range("A1").Column ' 1
Debug.Print(l)

Dim s As String
s = Range("A1").Address ' "$A$1"
Debug.Print(s)

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

行「2」、列「A」を取得するには Cells(2, 1).Address のように指定します。

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)

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

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

Dim s As String
s = ActiveCell.Address

選択されているセルの位置を取得するには Selection を使用します。

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

Dim s As String
s = Selection.Address

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

セルの範囲「B2」~「D4」の位置を取得するには Range("B2:D4").Address または Range("B2", "D4").Address のように指定します。

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

次の画像のように範囲選択されているとき Row と Column はセルの範囲の左上の位置を返します。Rows.Count と Columns.Count は、セルの範囲の行数と列数を返します。

1

これらを組み合わせて範囲選択しているセルの角の位置を取得できます。

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

関連ページ