VBA 列アルファベットと行番号 を文字列で取得する関数を作成

こんばんは、ファルコン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文字になっても同関数で取得できる。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする