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

VBA 列番号または列名を取得する

はじめに

Excel VBA マクロの列番号または列名を取得する方法を紹介します。

Range.Column プロパティから列番号を取得できます。Columns.Count プロパティから列数を取得できます。

列番号を列名に変換できます。

  • 目次
    • 列番号を取得する
    • セルの範囲の列番号を取得する
    • 列番号から列名を取得する

列番号を取得する

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を入力します。

その範囲の一番左の列番号を取得します。


Dim l As Long
l = Range("B2:D4").Column ' 2
Debug.Print(l)

セルの範囲の列数を取得するにはRange.Columns.Countのように入力します。


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

列番号と列数を組み合わせて最後の列番号を取得できます。

列番号から列名を取得する

VBA には列番号から列名を取得する関数はありませんが、公式のドキュメントにその方法が記載されています。

引数に列番号を渡すと、1 → A、27 → AA のように変換します。


Function ConvertToLetter(iCol As Integer) As String
    Dim iAlpha As Integer
    Dim iRemainder As Integer
    iAlpha = Int(iCol / 27)
    iRemainder = iCol - (iAlpha * 26)
    If iAlpha > 0 Then
        ConvertToLetter = Chr(iAlpha + 64)
    End If
    If iRemainder > 0 Then
        ConvertToLetter = ConvertToLetter & Chr(iRemainder + 64)
    End If
End Function

Dim s As String
s = ConvertToLetter(1)
Debug.Print(s) ' A
  • 目次
    • 列番号を取得する
    • セルの範囲の列番号を取得する
    • 列番号から列名を取得する