こんばんは、ファルコンM です。
最近、仕事でVBA をやっている。
VBA は、ほとんどやったことない。
なので、調べながらやっている。
新しい言語を勉強するときは、最近は本買って0からやるのではなく、ネットで調べながらやっている。
VBA で列のアルファベットを取得したい
上の場合で、range(“C2″) から、”C” を取得したい。
いろいろ調べてみたが、VBA ではそれを取得する関数はないようだ。
Dim str As String str = range("C2").columns
と書くと、str には、”C” ではなく、”3″ が代入される。Cは3番目だから列番号として3が代入される。
“3”じゃなくて、”C”って代入してほしいんだよね。
列のアルファベットを取得したい状況って、たくさんありそうな気がする。
でも、不思議と関数は探しても見つからなかった。
ってことで、
列アルファベットと行番号 を文字列で取得する関数を自分で作成した
上の写真の場合だと、”C2″ を取得する文字列する。
作成した関数は、以下の通り。
' セルの行番号、列番号を取得する( アルファベット形式 ) Function getColumnARow(r As range) As String getColumnARow = getColumnA(r) & r.Row End Function ' 列のアルファベットを取得する Function getColumnA(r As range) As String getColumnA = Split(r.Address, "$")(1) End Function
getColumnARow
range 形式の引数を指定してやれば、列アルファベット行番号の文字列を取得できる。( ただし、range は1つのセルでない場合の動作保証はやってないよ。)
getColumnA
range 形式の引数を指定してやれば、列アルファベットを文字列形式で取得できる。( 同じくrange は1つのセルでない場合の動作保証はしていない。)
r.Address で$C$2 のような文字列が取得できる。それをSplit すると [ “C”,”2″ ] になる。最後の(1) は一番目を選択するという意味。だから、getColumnA には、”C” が入る。
このような原理で、getColumnA を呼び出すと列アルファベットが取得できる。列アルファベットが2文字になっても同関数で取得できる。
コメントを残す