配列(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と表示される