VBA関数:指定文字で分割して配列にする(Split)

Split

Split関数は文字列を区切り文字で分割して配列に変換した結果を返します。

CSVファイルの読み込み時にはお世話になる関数です。

構文

戻り値 戻り値は内部処理形式がStringのVariant型の一次元配列になります。
Expression 分割したい文字列を指定します。長さが0の””の文字列を指定した場合は空配列を返します。
Delimiter 省略可能です。区切り文字列を指定します。省略時は半角スペース1文字が区切り文字になります。

カンマ「”,”」を指定することが多いと思いますが、タブ文字を表すvbTabなどの定数や、「”@@”」のような2文字以上での指定も可能です。

長さが0の””の文字列を指定した場合は空配列を返します。

Limit 省略可能です。何分割するのかを指定します。

省略時は-1が指定され、全ての要素の配列が返却されます。”1,2,3″をカンマで区切る場合に2を指定すると”1″と”2,3″の2つの要素の配列が返却されます。

Compare 省略可能です。分割対象文字列に含まれる区切り文字の識別方法をVbCompareMethod列挙型の定数で指定します。

省略時はバイナリモードになります。

定数 内容
vbBinaryCompare 0 バイナリモード。大文字と小文字、全角と半角、ひらがなとカタカナをそれぞれ区別して比較します。
vbTextCompare 1 テキストモード。大文字と小文字、全角と半角、ひらがなとカタカナをそれぞれ区別せず同じものとして比較します。
vbDatabaseCompare 2 Access用の定数のため通常は使う必要はありませんが指定可能です。指定した場合はテキストモードと同様に動作します。

サンプルコード

よくあるCSVファイル形式や、その他のパターンでのSplit関数の使い方のサンプルコードです。

実行結果

分割対象文字列と戻り値の変数を同じ変数にはしないようにする

分割対象文字列と戻り値用の変数を同じ変数で使いまわすことは可能ですが、プログラミングの作法として止めておいた方がいいです。

このような書き方ですね。

変数の用途が途中で変わってしまうようなプログラミングは混乱の元になります。ちゃんと変数を分けて書くようにしましょう。

ご自身が書かないとしてもSplit関数においてはこういう書き方をする方が結構おられますので注意しましょう。

戻り値の変数宣言でよくある間違い

Split関数の戻り値は上でも書いたとおりVariant型の一次元配列です。

そのため、Variant型ということから変数宣言時に型を宣言せずに以下の3行目のように暗黙Variantや As Variantと書いている方がおられます。

いやいや、

って書くとエラーになるじゃん、という話があるのですが、この書き方では文字列変数に過ぎず、戻り値が配列であることを考慮できていないためエラーになっているのであって、

とString型の配列として書けばエラーになりません。

ちなみに私はそれらを分かった上でSplit関数を使う場合は「Dim v」しか書かず暗黙のVariantにしていることがほとんどです。理由は特にないです。強いて言えば、Split=文字列分割、というのが分かっているので使うときに間違わないしそれでよくね?って感じですかね?

関連記事

サブコンテンツ

このページの先頭へ