Home » エクセルマクロ・Excel VBAの使い方 » 配列 » Excel VBAでスペースごとに配列変数に格納する-Split関数

Excel VBAでスペースごとに配列変数に格納する-Split関数

対象:Excel2007, Excel2010, Excel2013

Excel VBAでスペースごとに配列変数に格納する-Split関数

「vba スペースごとに配列に格納」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

何らかの文字列を、スペースごとに区切って配列に格納するVBA(Visual Basic for Applications)のコードを探している方による検索です。

[スポンサードリンク]

半角スペースごとに区切って配列に格納するサンプルマクロ

以下のようなマクロで、アクティブセルに入力されている文字列を、スペースごとに配列変数に格納することができます。


Sub 半角スペースごとに配列変数に格納する()

 Dim arr As Variant

 arr = Split(ActiveCell.Value)

 Stop

End Sub

上記のマクロを実行すると、Stop文の箇所でステップ実行モードになります。
ステップ実行中にメニュー[表示]-[ローカルウィンドウ]からローカルウィンドウを表示すれば、配列変数・arrに、スペースごとに、アクティブセルの値がスペースごとに格納されているのを確認できるでしょう。

Excel VBAでスペースごとに配列変数に格納する-Split関数

上図は、「a b c」と入力されたセルを選択した状態で、上記のマクロを実行してStop文でステップ実行モードになった状態です。

スペースごとに配列変数に格納しているのは
 arr = Split(ActiveCell.Value)
の部分です。

Split関数は、何らかの区切り文字を含む文字列から、1次元配列を作成して返す関数です。

第1引数に元の文字列、第2引数に区切り文字を指定しますが、第2引数を省略した場合、半角スペースを区切り文字と見なします。

第2引数を省略せずに、
 arr = Split(ActiveCell.Value, " ")
としても同じ結果が得られます。

全角スペースごとに区切って配列に格納するサンプルマクロ

全角スペースごとに区切って配列変数に格納するのなら、以下のようなマクロです。


Sub 全角スペースごとに配列変数に格納する()

 Dim arr As Variant

 arr = Split(ActiveCell.Value, " ")

 Stop

End Sub

Split関数の第2引数に全角スペースを指定すれば、
 arr = Split(ActiveCell.Value, " ")
全角スペースごとに、文字列が配列に格納されます。

スペースごとに区切って配列に格納するサンプルマクロ

半角か全角かいずれかのスペースごとに区切って配列変数に格納するのなら、以下のようなマクロでしょうか。


Sub スペースごとに配列変数に格納する()

 Dim arr As Variant
 Dim tmp As String

 tmp = ActiveCell.Value
 tmp = Replace(tmp, " ", " ")

 arr = Split(tmp)

 Stop

End Sub

Replace関数を使って、
 tmp = ActiveCell.Value
 tmp = Replace(tmp, " ", " ")
元データの全角スペースを、半角スペースに置換しておいてから、

Split関数です。
 arr = Split(tmp)

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » 配列 » Excel VBAでスペースごとに配列変数に格納する-Split関数

TrackBack:2

TrackBack URL
VBAで列番号のアルファベットを取得する-Split関数 from インストラクターのネタ帳
VBAのSplit関数を使って、セル番地・列番号のアルファベットを取得するサンプルマクロについて解説しています。
Split関数の戻り値が配列かどうか調べる from インストラクターのネタ帳
Split関数の戻り値が配列かどうか調べる方法をご紹介しています。
[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » 配列 » Excel VBAでスペースごとに配列変数に格納する-Split関数

「配列」の記事一覧

検索


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

.