VBScriptさんま屋.

VBScriptの個人的なメモです (´・ω・`)

配列(2) 配列の操作

概要

配列の操作について。

Filter関数

Filter関数を使って、検索文字列を含む要素からなる配列を取得できる。

Dim fruit, tmp

fruit = Array("みかん", "りんご", "メロン")
tmp = Filter(fruit, "ん") '「ん」を含む要素を抽出
MsgBox Join(tmp, ",") 'みかん,りんごと表示される

Filter関数の引数と戻り値

引数 説明 必須/省略可
第1引数 配列 必須
第2引数 検索文字列 必須
第3引数 検索文字列が(True:含まれる,False:含まれない)要素を探す 省略可
第4引数 検索文字列の比較方法(0:バイナリモード,1:テキストモード) 省略可
戻り値 配列 -

バイナリモードはアルファベットの大文字と小文字を区別し、テキストモードは区別しない。

For Each ... Nextステートメント

For Each ... Nextステートメントを使って配列の要素を順番に取得できる。

1次元配列の場合

Dim fruit, buf

fruit = Array("みかん", "りんご", "メロン")

For Each buf In fruit
  MsgBox buf 'みかん,りんご,メロンの順に表示される
Next

2次元配列の場合

Dim fruit(1,1)
Dim buf

fruit(0,0) = "みかん"
fruit(0,1) = "りんご"
fruit(1,0) = "メロン"
fruit(1,1) = "ぶどう"

For Each buf In fruit
  MsgBox buf 'みかん,メロン,りんご,ぶどうの順に表示される
Next

上の例でbufに代入されるのは配列要素のコピーなので、この構文を使って元の配列を書き換えることはできない。

添字番号とFor文を使用した繰り返し処理

Dim fruit, i

fruit = Array("みかん", "りんご", "メロン")

For i = 0 To UBound(fruit)
  MsgBox fruit(i) 'みかん,りんご,メロンの順に表示される
Next

Stepを指定することで、逆順や1つとばし等が可能。

逆順

Dim fruit, i

fruit = Array("みかん", "りんご", "メロン")

For i = UBound(fruit) To 0 Step -1
  MsgBox fruit(i) 'メロン,りんご,みかんの順に表示される
Next

1つとばし

Dim fruit, i

fruit = Array("みかん", "りんご", "メロン")

For i = 0 To UBound(fruit) Step 2
  MsgBox fruit(i) 'みかん,メロンの順に表示される
Next

LBound関数とUBound関数

LBound関数を使って配列の添字番号の最小値を取得できる。
UBound関数を使って配列の添字番号の最大値を取得できる。

LBound関数の引数と戻り値

引数 説明 必須/省略可
第1引数 配列 必須
第2引数 次元を指定(デフォルトは1) 省略可
戻り値 添字番号の最小値 -

UBound関数の引数と戻り値

引数 説明 必須/省略可
第1引数 配列 必須
第2引数 次元を指定(デフォルトは1) 省略可
戻り値 添字番号の最大値 -

1次元配列の場合

Dim fruit(2)

MsgBox LBound(fruit) '0と表示される
MsgBox UBound(fruit) '2と表示される

2次元配列の場合

Dim fruit(3,7)

MsgBox LBound(fruit, 1) '0と表示される
MsgBox UBound(fruit, 1) '3と表示される
MsgBox LBound(fruit, 2) '0と表示される
MsgBox UBound(fruit, 2) '7と表示される