ここ数日ExcelVBAをいじっています。
項目の収まったセルを特定するために、項目ごとにセルの位置を定数で持っておくことにしました。
最初"A"、"B"、"C"..."AA"、"AB"、"AC"といった具合に順に定数をセット。続いてのコーディングで、Rangeでがさっと持って来た情報をFor Each ... In Rangeで1セルずつ処理することをもくろみました。
ところが対象となるセルのカラムは、Columnで数値を取得したり、Addressメソッドで"$AG$5"といった文字列を取得することはできても、アルファベット部分だけの取得はできないことがわかりました。
そこで急きょ、Column数値からアルファベットを探す関数を作ったのでご紹介します。
2012年8月4日追記:以下のソースコードにはバグがあります。
http://d.hatena.ne.jp/Aodrey/20120804/1344051321
をご参照くださいm(_ _)m
'Columnsの数値からアルファベットを取得する Function getAlphabetFromColumn(col As Long) As String getAlphabetFromColumn = getSimpleAlpha("", col) End Function Private Function getSimpleAlpha(prefix As String, c As Long) As String Dim alpha As String Dim leftover As Long Dim residues As Long leftover = c \ 26 If leftover > 0 Then residues = c Mod 26 alpha = getSimpleAlpha(getSimpleAlpha("", leftover), residues) Else residues = 0 alpha = Chr(c + 64) End If getSimpleAlpha = prefix & alpha End Function
使うときは、getAlphabetFromColumnにColumnの値を引数として渡します。
Dim colStr As String colStr = getAlphabetFromColumn(ActiveSheet.Range("$GAU$3").Column)'Column値は4779
colStrには、"GAU"が入ってきます。