Split関数

 文字列を指定した区切り文字で区切り、配列として返します。

使用例

例1

コード

Sub Func_Split()

    Dim str_season As String, v_season As Variant

    str_season = "春,夏,秋,冬"

    v_season = Split(str_season, ",")

    MsgBox v_season(0)

End Sub

出力
f:id:accs2014:20190128161945p:plain:left:w200

 文字列をカンマで区切って配列に格納しています。最初の要素は「春」となります。

例2

コード

Sub Func_Split()

    Dim str_season As String, v_season As Variant

    str_season = "春,夏,秋,冬"

    v_season = Split(str_season, ",", 2)

    MsgBox v_season(1)

End Sub

出力
f:id:accs2014:20190128161942p:plain:left:w200

 第3引数により生成する要素数を指定できます。
 この場合本来4つの要素が生成されるところですが要素数を2つと指定しています。このとき最後の(2つ目の)要素は「夏」になるのではなく、残りの文字列が分割されずに詰め込まれ「夏,秋,冬」となります。
 なおこの場合、5以上の指定しても生成される要素は4つまでです。

例3

コード

Sub Func_Split()

    Dim str_season As String, v_season As Variant

    str_season = "春and夏and秋AND冬"

    v_season = Split(str_season, "and", -1, vbBinaryCompare)

    MsgBox Join(v_season, ",")

End Sub

出力
f:id:accs2014:20190128161938p:plain:left:w200

 Split関数で配列にした文字列を再度Join関数で結合して出力しています。
 第4引数をvbBinaryCompareとした場合または省略した場合、バイナリモードでの比較となり「大文字と小文字」「全角と半角」「ひらがなとカタカナ」を区別します(同一視しません)。

書式

Split(配列[,区切り文字,分割要素数,比較モード])

 区切り文字は2文字以上にすることができます(上記例3参照)。空文字("")とした場合または省略した場合、文字列は分割されず全体が1つの要素として返されます。

 分割要素数によりいくつの要素に分割するかを指定することができます。本来生成される要素数の方が多い場合、最後の要素に残りの文字列が詰め込まれます(上記例2参照)。本来生成される要素数の方が少ない場合、生成されるのはその要素数までです。

 比較モードとして指定できる値(定数と数値のいずれか)と意味は次のとおりです。省略した場合は-1を指定したものとみなされます。

比較モード(定数)比較モード(数値)意味
vbUseCompareOption-1Option Compare ステートメントの設定により比較
vbBinaryCompare0バイナリモードで比較(大文字と小文字、全角と半角、ひらがなとカタカナは区別する(同一視しない))
vbTextCompare1テキストモードで比較(大文字と小文字、全角と半角、ひらがなとカタカナは区別しない(同一視する))
vbDatabaseCompare2データベースの情報に基づいて比較

備考

 区切り文字列をどう指定しても「単に1文字ずつ区切る」ということはできません。