数値から列番号を取得する|Excel VBA |
Excelの列番号はA・B・C…で表しますが、VBAでセルを操作するとき、列を数値で指定したいこともあります。小さい数字なら、1 はA列、2 はB列と、脳内で変換することも簡単ですが、21や24など大きい数字の列番号となると、間違えやすくなりますね。
列番号を調べるには、次のように半角英数字のアスキーコードを利用する手もあります。
Sub Sample1()
Dim num As Long
num = InputBox("列の数字を入力してください")
MsgBox Chr(num + 64)
End Sub
大文字Aのアスキーコードは 65 なので、指定された数値に 64 を加算しています。
しかし、この方法では AA列以降には対応できません。
こんなときはAddressプロパティを使うと便利です。
MsgBox Cells(1, 27).Address
を実行すると「$AA$1」のような文字列が返ります。
Addressプロパティには引数があり、行と列のそれぞれを、絶対参照または相対参照で表すことが可能です。
MsgBox Cells(1, 27).Address(True, False)
を実行すると、「AA$1」のように行番号だけが絶対参照で表されます。
このアドレスは「$」より左側が列番号となっているので、次のようにすると列番号だけを取得できます。
Sub Sample2()
Dim num As Long, buf As String
num = InputBox("列の数字を入力してください")
buf = Cells(1, num).Address(True, False)
buf = Left(buf, InStr(buf, "$") - 1)
MsgBox buf
End Sub