更新日:、 作成日:
VBA 列番号または列名を取得する
はじめに
Excel VBA マクロの列番号または列名を取得する方法を紹介します。
Range("B1").Column メソッドから、セル「B1」の列番号を取得できます。列番号を列名に変換できます。
Range.Columns.Count プロパティから、セルの範囲の列数を取得できます。
Range.Column + Range.Columns.Count - 1 から、セルの範囲の最終列番号を取得できます。
列番号を取得する
Range の引数にセル名を指定すると、そのセルの列番号を取得できます。
セル「A1」の列番号を取得するには Range("A1").Column を入力します。
Dim l As Long
l = Range("A1").Column ' 1
l = Range("C1").Column ' 3
Debug.Print(l)
アクティブセル
アクティブセルの列番号を取得するには ActiveCell を入力します。
Dim l As Long
l = ActiveCell.Column
Debug.Print(l)
アクティブセルとは、フォーカスがあるセルのことです。
選択セル
選択しているセルの列番号を取得するには Selection を入力します。範囲選択しているときは、一番左の列番号を取得します。
Dim l As Long
l = Selection.Column
Debug.Print(l)
スポンサーリンク
セルの範囲の列番号を取得する
セルの範囲「B2」~「D4」の列番号を取得するには Range("B2:D4").Column を入力します。その範囲の一番左の列番号を取得します。
セルの範囲の列数を取得するには Range.Columns.Count のように入力します。
Dim l As Long
l = Range("B2:D4").Column ' 2
l = Range("B2:D4").Columns.Count ' 3
Debug.Print(l)
最終列番号を取得する
セルの範囲「B2」~「D4」の最終列番号を取得するには Range.Column + Range.Columns.Count - 1 または Range.Columns(Range.Columns.Count).Column のように入力します。
Dim c As Range
Set c = Range("B2:D4")
Dim l As Long
l = c.Column + c.Columns.Count - 1 ' 4
l = c.Columns(c.Columns.Count).Column ' 4
Debug.Print(l)
Range.CurrentRegion や UsedRange を使用して、データの範囲やシート全体の最終列番号を取得できます。
列番号から列名を取得する
VBA には列番号から列名を取得する関数はありませんが、公式のドキュメントにその方法が記載されています。
Function ConvertToLetter(iCol As Long) As String
Dim a As Long
Dim b As Long
a = iCol
ConvertToLetter = ""
Do While iCol > 0
a = Int((iCol - 1) / 26)
b = (iCol - 1) Mod 26
ConvertToLetter = Chr(b + 65) & ConvertToLetter
iCol = a
Loop
End Function
引数に列番号を渡すと、1 → A、27 → AA のように変換します。
Dim s As String
s = ConvertToLetter(1) ' A
s = ConvertToLetter(26) ' Z
s = ConvertToLetter(27) ' AA
Debug.Print(s)