VBScript: 動的配列を作成し、要素を追加する方法

VBScriptで動的配列を作成し、配列に要素を追加していく方法を紹介します。

使用するのは「Dimステートメント」「Redimステートメント」または 「Redim Preserve」です。

「Redim 配列(最大インデックス)」の場合、 すでに値が格納されている要素の値は保持されません。
一方「Redim Preserve 配列(最大インデックス)」の場合、 すでに値が格納されている要素の値は保持されます。 英単語「Preserve」には保存や保持といった意味があります。

次のサンプルコードは、 動的配列を宣言し、配列の要素数を動的に追加・変更しています。

「Redim Preserve」と「Redim」の場合の動作の違いに注意してください。

'動的配列を宣言
Dim arr()

ReDim arr(1)
arr(0) = "a"
arr(1) = "b"

'要素を追加
ReDim Preserve arr(2)
arr(2) = "c"

WScript.Echo "要素数: " & UBound(arr) + 1

For i = 0 To UBound(arr)
	WScript.Echo i & " -> " & arr(i)
Next

' 要素数を変更(Preserve なし)
ReDim arr(3)

WScript.Echo "要素数: " & UBound(arr) + 1

For i = 0 To UBound(arr)
	WScript.Echo i & " -> " & arr(i)
Next

If arr(0) = "" Then
	WScript.Echo "True"
Else
	WScript.Echo  "False"
End If

実行結果
要素数: 3
0 -> a
1 -> b
2 -> c
要素数: 4
0 ->
1 ->
2 ->
3 ->

下のコード部分では「Redim Preserve」で配列の要素を追加しています。 ですから「arr(0)」「arr(1)」の値は保持されています。

'要素を追加
ReDim Preserve arr(2)
arr(2) = "c"

一方、下のコード部分では「Redim」のみで配列の要素を追加しています。 ですから「arr(0)」「arr(1)」「arr(2)」の値が保持されず、 空の文字列""になっています。

' 要素数を変更(Preserve なし)
ReDim arr(3)
VBScript入門