VBS 配列のサンプル(VBScript)

VBS(VBScript)の配列のサンプルです。

目次

仕組み 配列とは
  静的配列を作成 / 動的配列を作成 / Array関数で作成
  ForEach文、For文で要素を取得 / 要素を検索 / 要素数を取得
  配列の値を変更する
  配列をコピー
  ループで2次元配列を作成する

配列とは

a = Array( 値1 , 値2 , 値3 )

上記は複数の値を変数aに代入しています。
この変数aは配列として複数の値を持ちます。

  • 1つの変数で複数の値を保持できます。
  • 各項目を要素(element)といいます。
  • 要素の順序をインデックス(添字)で管理します。上記図では(0)、(1)、(2)、(3)がインデックスです。
  • インデックスの先頭は0から始まります。

静的配列を作成

要素数を宣言して配列を作成します。

Dim arr(2)

arr(0) = 1
arr(1) = 2
arr(2) = 3
'arr(3) = 4 インデックスが有効範囲にありません

WScript.Echo(arr(0))'1
WScript.Echo(arr(1))'2
WScript.Echo(arr(2))'3

1行目は、変数の後のかっこで2を指定しています。
その場合の要素は、3~5行目のようにインデックスは0から2までの3つ入ります。
要素の数が2つではないので注意が必要です。
Javaの場合は、3と宣言したら要素の数は3つです。

動的配列を作成

要素数を後から変更します。要素数が変わるので動的配列と呼ばれます。

Dim arr()
    
ReDim arr(2)
    
arr(0) = "赤"
arr(1) = "黄"
arr(2) = "青"

ReDim Preserve arr(3)
arr(3) = "オレンジ"

For Each b In arr
    WScript.Echo (b) '赤 黄 青 オレンジ
Next

1行目は、配列の変数を宣言しています。要素数は指定しません。
3行目は、Redimで数値を2にしています。
5~7行目は、値をセットしています。
9行目は、Redim Preserveで数値を3に変更しています。
Preserveは保持するという意味です。Preserveがないと5~7行目の値がクリアされてしまいます。

Array関数で作成

Array関数で配列を作成します。

Dim arr
arr = Array(1, 2, 3)

WScript.Echo arr(0) '1
WScript.Echo arr(1) '2
WScript.Echo arr(2) '3

2行目は、Arrayで配列に値をまとめてセットしています。

ForEach文、For文で要素を取得

Dim arr
arr = Array(1, 2, 3)

For Each b In arr
	WScript.Echo b '1 2 3
Next

For i = 0 To UBound(arr)
	WScript.Echo arr(i) '1 2 3
Next
WScript.Echo UBound(arr) '2
WScript.Echo LBound(arr) '0

4行目は、For Each文で配列の値の数分処理を繰り返します。
8行目は、For文で配列の値の数分処理を繰り返します。
UBoundは引数の配列の最大のインデックス値を返します。2が返ります。
Lboundは引数の配列の最小のインデックス値を返します。0が返ります。

要素を検索

要素を検索するサンプルです。

Dim arr
Dim b1

arr = Array("赤", "黄", "青")
b1 = False

For Each c1 In arr
    If c1 = "黄" Then
        b1 = True
        Exit For
    End If
Next
WScript.Echo(b1) '-1 (True)が表示される

For Eachでループさせて配列の要素を一つずつ確認していきます。
Trueは-1で、Falseは0です。

要素数を取得

Uboundを使用して要素数を取得します。

Dim arr
arr = Array("赤", "黄", "青")

WScript.Echo(UBound(arr)+1) '3が表示される

配列の要素数は、UBoundに1を追加します。

配列の値を変更する

Dim arr
arr = Array("赤", "黄", "青")

arr(1) = "オレンジ"

WScript.Echo arr(0) '赤
WScript.Echo arr(1) 'オレンジ
WScript.Echo arr(2) '青

変更は、要素のインデックス(添字)を指定して値を代入します。

配列をコピー

配列をコピーするサンプルです。

Dim arr1,arr2
arr1 = Array("赤", "黄", "青")

arr2 = arr1 '配列をコピー

arr2(0) = "オレンジ"
WScript.Echo(arr2(0)) 'オレンジ
WScript.Echo(arr2(1)) '黄
WScript.Echo(arr2(2)) '青

WScript.Echo(arr1(0)) '赤
WScript.Echo(arr1(1)) '黄
WScript.Echo(arr1(2)) '青

コピー先の配列の値を変更してもコピー元の配列の値は変更されません。

ループで2次元配列を作成する

for文のループで2次元配列を作成するサンプルです。

Dim arr(2,2)

num = 1
For i = 0 To 1
    For j = 0 To 2
        arr(i, j) = num
        num = num + 1
    Next
Next

WScript.Echo(arr(0,0)) '1
WScript.Echo(arr(0,1)) '2
WScript.Echo(arr(0,2)) '3
WScript.Echo(arr(1,0)) '4
WScript.Echo(arr(1,1)) '5
WScript.Echo(arr(1,2)) '6

関連の記事

VBS if文のサンプル(VBScript)

△上に戻る