Join関数について
Join関数というものがある
Join関数
前回の記事
に、 id:imihito さんからコメントをいただいた。曰く、
argsByArray 相当処理として、組み込み関数にJoin 関数というものが有ったりします
```vba
Join(strArray, "! ")
```
ははは。そういえばそんなのあったなー。またしても、
車輪の再発明
ですよ。はははorz
で、やってみた。
Join関数を使ってみる
とりあえず、次のようなコードでやってみる。
リスト1 標準モジュール
Public Sub test() Dim a As Variant a = Array("アホ", "ボケ", "カス", "デコスケ") '……(1)' Debug.Print Join(a, "! ") '……(2)' End Sub
まず、(1)の
a = Array("アホ", "ボケ", "カス", "デコスケ")
で、Variant型変数の a にArray関数を使って配列をぶち込んでおく。
んで、(2)の
Debug.Print Join(a, "! ")
でJoin関数の返り値をイミディエイト・ウインドウに表示してみる。
実行結果
この通り、配列の各要素のカンチャンに第2引数の「! 」を入れてつなげた文字列が出力された。
まるっきりSplit関数の反対なのね。
リスト1改 標準モジュール
ちょっとだけ付け加える。
Public Sub test() Dim a As Variant a = Array("アホ", "ボケ", "カス", "デコスケ") Debug.Print Join(a, "! ") & "!" '……(*)' End Sub
(*)の
Debug.Print Join(a, "! ") & "!"
は、Join関数の返り値に「!」を付け加えている。
実行結果
要するに、
Dim i As Integer Dim tmp As String For i = 0 To UBound(a) If i = 0 Then tmp = a(i) Else tmp = tmp & "! " & a(i) End If Next tmp = tmp & "!" Debug.Print tmp
と同じ処理が、わづか3行でできてしまうということだ。
一応、実験。
次のコードで検証する。
リスト2 標準モジュール
Public Sub test() Dim a As Variant a = Array("アホ", "ボケ", "カス", "デコスケ") Debug.Print Join(a, "! ") & "!" Dim i As Integer Dim tmp As String For i = 0 To UBound(a) If i = 0 Then tmp = a(i) Else tmp = tmp & "! " & a(i) End If Next tmp = tmp & "!" Debug.Print tmp End Sub
実行結果
ハイ、全く同じ実行結果でした。
おわりに
またしても、体系的に学んでいない弱みを露呈してしまった。