できない例
Sub test_failed()
Dim ar
Dim i
ar = Split(" _
"A," _
"B", _
"C", _
, ",")
For i = LBound(ar) To UBound(ar)
Debug.Print ar(i), Len(CStr(ar(i)))
Next
End Sub
たとえばこのデータ(改行 vbCrlf含む)を配列に入れるのはどうすればいいでしょうか?
VBEditorには1行の字数制限があります。したがって配列変数を代入するとき長すぎると改行する必要があります。しかし上の例はうまくいきません。
しかもこれはどこに書いてあるのかよくわからないので一応成功したのでメモします。
&の使用
Sub test()
Dim ar
Dim i
ar = _
Split( _
"AbC" & _
"DEF," & _
"GH," & _
"II," & vbCrLf & _
"JJ," & _
"シャア専用," & _
"KK," & _
"LL," & _
"オールリセット," & _
"集計 ", ", ")
For i = LBound(ar) To UBound(ar)
Debug.Print ar(i), Len(CStr(ar(i)))
Next
End Sub
AbCDEF,GH,II,
JJ,シャア専用,KK,LL,オールリセット,集計 41
これでなんとたった一つの配列の要素になっています。
ポイントは
"集計 ", ", ")
区切り文字の部分です。
通常区切り文字の指定にスペースを入れないのですが、半角の空白を入力します。
これでひとつながりになります。
しかし区切り文字のスペースを削除するとバラバラになります。
空白のあるなしで随分違います。もっと明確にコントロールできるか。次のようになっていきます。
改行しながら複数の要素を入れる実験
Sub test()
Dim ar
Dim i
ar = _
Split( _
"A," & _
"B" & _
",", "," _
)
For i = LBound(ar) To UBound(ar)
Debug.Print ar(i)
Next
End Sub
これを出力すると
: ar(0) : "A" : String
: ar(1) : "B" : String
: ar(2) : "" : String
となります。ということは
",", "," _
は "コンマ空の要素",区切り文字空白アンダーバー
となっているようです
多数の要素を入れる完成形
Sub test()
Dim ar
Dim i
ar = _
Split( _
"A," & _
"B," & _
"C", _
",")
For i = LBound(ar) To UBound(ar)
Debug.Print ar(i), Len(CStr(ar(i)))
Next
End Sub
出力
A 1
B 1
C 1
Sub test()
Dim ar
Dim i
ar = _
Split( _
"A," & _
"B" & _
"C", _
",")
For i = LBound(ar) To UBound(ar)
Debug.Print ar(i), Len(CStr(ar(i)))
Next
End Sub
出力
A 1
BC 2
Bの後ろにコンマがないので切れないでCにつながりました。
もしエラーになる場合には最後の要素(上記はC)で無理に折れずに
ar = _
Split( _
"A," & _
"B" & _
"C",",")
としてください。この方が安定します。
このように多数の要素で、しかも途中で中折れしても、このように代入ができます。