Home » ExcelVBA Rangeオブジェクト » VBAで列番号のアルファベットを取得する-Split関数

VBAで列番号のアルファベットを取得する-Split関数

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

VBAで列番号のアルファベットを取得する-Split関数

「エクセルvba split(変数, "$")」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

列番号のアルファベットを取得するサンプルマクロ

以下のようなExcelマクロを、どこかでご覧になった方による検索かな、と推測しています。

Sub セル番地のアルファベットを取得する()

 Dim adrs As String

 adrs = ActiveCell.Address
 MsgBox Split(adrs, "$")(1)

End Sub

例えばA1がアクティブな状態で上記のマクロを実行すると、アクティブセルの列番号のアルファベット「A」が、メッセージボックスに表示されます。

[スポンサードリンク]

VBA(Visual Basic for Applications)の、配列を作成するSplit関数を理解できている方が使える、ちょっとだけ難易度の高い、セルアドレスの列を表すアルファベットを取得するコードです。

このプロシージャに登場する「Split(adrs, "$")(1)」というコードについて調べていたのが、
「エクセルvba split(変数, "$")」
という検索キーワードかな、と推測しています。

列番号のアルファベットを取得するマクロを理解するためのマクロ

「Split(adrs, "$")(1)」の部分がわからないという方は、以下のように少し変形したマクロで理解することをおすすめします。

Sub セル番地のアルファベットを取得するコードを理解する()

 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関数で配列が作成される直前の状態は、下図のような状態です。

VBAで列番号のアルファベットを取得する-Split関数

String型の変数・adrsにはアクティブセルのアドレス「$A$1」が格納され、
Variant型の変数・arrにはまだ何もデータが格納されていません。

ここでショートカットキー[F8]を押して1行進めると、下図のような状態になります。

VBAで列番号のアルファベットを取得する-Split関数

先ほどまでEmptyだった変数・arrに、データが格納されました。

ここで「arr」の前の[+]をクリックすると、配列変数・arrの中身を確認できます。

VBAで列番号のアルファベットを取得する-Split関数

変数・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関数をしっかり理解しましょう。

[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » VBAで列番号のアルファベットを取得する-Split関数

「ExcelVBA Rangeオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.