配列の操作

●Split関数

 Join関数とは逆に、各要素ごとに区切られた文字列から1次元の配列を作成し、その結果を返すのがSplit関数です。
 それでは、
“プロジェクトA,情報システム部,開発2課,大野グループ”
を、「,」を区切りとして4つの要素に分解してみましょう(リスト3)。

リスト3:ひとつの文字列を4つの要素に分解する

Sub SplitSample()
    Dim myData         As String
    Dim mySplit        As Variant
    Dim myVnt          As Variant
    Dim myMsg          As String
    Dim i              As Integer

    myData = "プロジェクトA,情報システム部,開発2課,大野グループ"

    mySplit = Split(myData, ",")
    
    i = 1
    myMsg = ""
    For Each myVnt In mySplit
        myMsg = myMsg & " 要素" & i & "=" & myVnt
        i = i + 1
    Next myVnt
    MsgBox myMsg

End Sub

 リスト3の実行結果は、図4のようになります。

図4:ひとつの文字列が4つの要素に分解された

と4つの要素に分解されていることがわかりますね。
 文字列の区切りを識別する文字に、サンプルでは「,」を指定しましたが、特に指定をしないと区切り文字にはスペースが使用されます。
 例えば、リスト3の
mySplit = Split(myData, ",")

mySplit = Split(myData)
とすると、メッセージボックスには、
要素1=プロジェクトA,情報システム部,開発2課,大野グループ
と表示されます(図5)。

図5:区切り文字を指定していないため、4つの要素に分解できていない

 引数が長さ0の文字("")である場合は、全文字列を単一の要素として返します。返される値を格納する変数は、Variant型を用意します。また、返される配列のインデックスは常に“0”から始まります。
 Split関数の構文は以下のとおりです。

Split(文字列[,区切り文字[,要素数[,比較モード]]])
 必要な要素数を指定することができるので、リスト3の
mySplit = Split(myData, ",")
に要素数を指定を追加して、
mySplit = Split(myData, ",", 2)
とすれば、配列に「プロジェクトA」という要素と、「情報システム部,開発2課,大野グループ」という要素が作成されます。メッセージボックスには、
要素1=プロジェクトA 要素2=情報システム部,開発3課,大野グループ
と表示されます(図6)。

図6:ひとつの文字列を第3引数に「2」を指定することによってふたつの要素に分解した