「エクセルvba split(変数, "$")」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
列番号のアルファベットを取得するサンプルマクロ
以下のようなExcelマクロを、どこかでご覧になった方による検索かな、と推測しています。
Dim adrs As String
adrs = ActiveCell.Address
MsgBox Split(adrs, "$")(1)
例えばA1がアクティブな状態で上記のマクロを実行すると、アクティブセルの列番号のアルファベット「A」が、メッセージボックスに表示されます。
VBA(Visual Basic for Applications)の、配列を作成するSplit関数を理解できている方が使える、ちょっとだけ難易度の高い、セルアドレスの列を表すアルファベットを取得するコードです。
このプロシージャに登場する「Split(adrs, "$")(1)」というコードについて調べていたのが、
「エクセルvba split(変数, "$")」
という検索キーワードかな、と推測しています。
列番号のアルファベットを取得するマクロを理解するためのマクロ
「Split(adrs, "$")(1)」の部分がわからないという方は、以下のように少し変形したマクロで理解することをおすすめします。
Dim adrs As String
Dim arr As Variant
adrs = ActiveCell.Address
arr = Split(adrs, "$")
MsgBox arr(1)
End Subメニュー[表示]-[ローカルウィンドウ]から[ローカルウィンドウ]を表示しておいて、A1セルがアクティブな状態で、上記のマクロをVBE(Visual Basic Editor)のショートカットキー[F8]でステップ実行してください。
ステップ実行中のローカルウィンドウの様子
Split関数で配列が作成される直前の状態は、下図のような状態です。
String型の変数・adrsにはアクティブセルのアドレス「$A$1」が格納され、
Variant型の変数・arrにはまだ何もデータが格納されていません。
ここでショートカットキー[F8]を押して1行進めると、下図のような状態になります。
先ほどまでEmptyだった変数・arrに、データが格納されました。
ここで「arr」の前の[+]をクリックすると、配列変数・arrの中身を確認できます。
変数・adrsに代入されていた文字列「$A$1」が、Split関数を使った、
arr = Split(adrs, "$")
の行で分解され、配列変数になった状態がローカルウィンドウに表示されています。
変数・adrsに格納されている文字列「$A$1」の、
1つ目の「$」の前には何もないので
「arr(0)」には空白文字列が格納され、
1つ目の「$」の後ろ2つ目の「$」の前には「A」があるので
「arr(1)」には「A」が格納され、
2つ目の「$」の後ろには「1」があるので
「arr(2)」には「1」が格納されています。
この配列変数・arrの2つ目の要素「arr(1)」の値を表示しているのが、
MsgBox arr(1)
の部分です。
Split(変数, "$")(1) の意味
Split関数を使った「$」を区切り文字とした文字列を分解して配列を作る処理と、配列の2つ目の要素をメッセージボックスに表示する、
arr = Split(adrs, "$")
MsgBox arr(1)
という2行を1行にまとめたのが、先にご紹介したマクロの、
MsgBox Split(adrs, "$")(1)
です。
ローカルウィンドウの状態を確認しつつ上記の操作を行っても、
MsgBox Split(adrs, "$")(1)
の意味がわからないという方は、おそらくSplit関数を理解できていないのでしょうから、Split関数を使った簡単なマクロを作って、Split関数をしっかり理解しましょう。
- Newer:VBAで次のグラフシートを選択する
- Older:SheetとSheetsとWorksheetとWorksheets
Home » Excel VBA Rangeオブジェクト » VBAで列番号のアルファベットを取得する-Split関数