Split関数の裏技
このとき、
thom (id:t-hom) さんに教えてもらった。
Split関数の第2引数は省略できる
完全に思い込みで必須だと思っていた。
なるほど、Office VBA Reference の Split Function の項によると、
Syntax
Split( expression [ , delimiter [ , limit [ , compare ]]] )The Split function syntax has these named arguments:
Part Description 略 略 delimiter Optional. String character used to identify substring limits. If omitted, the space character (" ") is assumed to be the delimiter. If delimiter is a zero-length string, a single-element array containing the entire expression string is returned. 以下略 以下略
確かに、第2引数delimiterはOptional、つまり省略可能で、省略された時は「the space character (" ")」と見なされるみたいなことが書いてある。
サンプルコード
次のコードで実験。
リスト1 標準モジュール
Public Sub testSplitFunction()
Dim ar As Variant
ar = Split("お ま え は ア ホ か") '……(1)'
Dim i As Long
For i = LBound(ar) To UBound(ar) '……(2)'
Debug.Print ar(i)
Next
End Sub
(1)の
ar = Split("お ま え は ア ホ か")
では、Split関数に文字列「お ま え は ア ホ か」だけを渡している。わかりにくいけれど、各文字の間を半角スペースで区切っている。
第2引数を省略しているので、delimiterに半角スペースを指定していると見なされ、「お」「ま」「え」「は」「ア」「ホ」「か」を要素とする配列が変数arに格納されるはずだ。
あとは、(2)からの3行
For i = LBound(ar) To UBound(ar) Debug.Print ar(i) Next
で、配列の各要素をイミディエイト・ウインドウに表示する。
実行

このとおり。
おわりに
非常に便利なテクニックだと思います。