Split関数の裏技

Split関数の裏技

このとき、

akashi-keirin.hatenablog.com

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引数delimiterOptional、つまり省略可能で、省略された時は「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

で、配列の各要素をイミディエイト・ウインドウに表示する。

実行

f:id:akashi_keirin:20180914183846j:plain

このとおり。

おわりに

非常に便利なテクニックだと思います。