直接それを行うことはできません。VBAの配列は通常、使用する前にインデックスを付けてディメンション化する必要があります。
変数を割り当てる前に、動的配列を使用してサイズを変更できます。
Dim arr() As String
ReDim arr(0)
arr(UBound(arr)) = "Some String"
ReDim Preserve arr(UBound(arr) + 1)
arr(UBound(arr)) = "Some Other String"
ReDim Preserve arr(UBound(arr) + 1)
arr(UBound(arr)) = "Some 3rd String"
MsgBox Join(arr, ",")
保存キーワードは、値を上書きするのではなく、配列内の値を維持します。ただし、Preserveはコストがかかり、配列の最後の次元のサイズを変更することしかできないため、上記のアプローチは一般的に推奨されません。
コレクションは異なり、VBA環境では速度が遅く、一般的に柔軟性が低くなります(どの環境かは指定していませんが、Excelを想定します)
Dim coll As Collection
Dim itm As Variant
Dim tempS As String
Set coll = New Collection
coll.Add "Some String"
coll.Add "Some Other String"
coll.Add "Some 3rd String"
For Each itm In coll
tempS = tempS & itm & ","
Next itm
MsgBox Left(tempS, Len(tempS) - 1)
配列を作成するには、それらをループする必要があります。
ニーズに応じて、他にも多数のオプションがあります
組み込みの方法
文字列については、splitをご覧ください。
Const stri As String = "Some String, Some Other String, Some 3rd String"
Dim arr() As String
arr = Split(stri, ",")
MsgBox Join(arr, ",")
外部オブジェクトの使用
スクリプト辞書
Dim dic As Object
Set dic = CreateObject("scripting.Dictionary")
dic.Add "1", "Some String"
dic.Add "2", "Some Other String"
dic.Add "3", "Some 3rd String"
Debug.Print Join(dic.items, ",")
.Net arrayList
Dim al As Object
Set al = CreateObject("System.Collections.Arraylist")
al.Add "Some String"
al.Add "Some Other String"
al.Add "Some 3rd String"
MsgBox Join(al.ToArray(), ",")