列名から列Noを取得して返すFunctionを作ってみた

 「列Noから列名を取得して返すFunctionを作ってみた」に続いて、逆バージョンも作ってみた。

MsgBox getColumnNoFromColumnName("A")

とすると、「1」と表示される。
 引数として"Z"を与えれば「26」が返ってくるし、"AA"を与えれば「27」が返ってくる。

 ちなみにこのFunctionを作ろうと思ったきっかけは、

  • 管理画面では「列名」を指定したい
  • 管理画面で指定した列の○列右を指定したい

という事をしたかったから。
 そういうやり方が正しいのかどうか特に自信がある訳ではなく、もっと別なやり方もあるような気もするのだが、まぁ成長の過程の記録として記しておくことにする。
 誰かが使うかもしれないし。

'列名から列Noを取得して返す
Public Function getColumnNoFromColumnName(columnName As String) As Long
Dim i   As Integer
Dim tmp As Long

    For i = 1 To Len(columnName)
        tmp = tmp + ((Asc(Mid(columnName, i, 1)) - 64) * (26 ^ (Len(columnName) - i)))
    Next i
    
    getColumnNoFromColumnName = tmp
End Function