VBSの配列の扱い方

参考サイト

チェック式 WSH入門 第6回 VBScriptの配列を極める
http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh06/cformwsh06_01.html

配列の宣言

http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh06/cformwsh06_01.html

  0
Dim a(5)

のようにカッコをつければ配列になる。

ループで配列操作

http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh06/cformwsh06_02.html

配列内のデータ操作は、

  • For ~ Nextステートメント
  • For Each ~ Nextステートメント = 配列の各要素について繰り返しを行う
    で順次の操作ができる。
  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
Option Explicit
Dim intNumbers(4) 'サイズ5の配列を宣言
 
'配列の各要素に値を代入
Dim intCounter 'ループカウンタ用変数
For intCounter = 0 To 4 Step 1 '0から4まで、1ずつ変化させる
    '配列に、インデックスの倍の値を代入
    intNumbers(intCounter) = intCounter * 2
Next
 
'3つ目の値を参照
MsgBox "3つ目の値は" & intNumbers(2) & "です。"

「For Each」で配列を回してるサンプル

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
Option Explicit
Dim intNumbers(4) 'サイズ5の配列を宣言
 
'配列の各要素に値を代入
Dim intCounter 'ループカウンタ用変数
For intCounter = 0 To 4 '0から4まで、1ずつ変化させる
    '配列に、インデックスの倍の値を代入
    intNumbers(intCounter) = intCounter * 2
Next
 
Dim intTemp, strMessage
strMessage = ""
For Each intTemp In intNumbers '全要素に対して繰り返す
    ',で文字列をつなげる
    strMessage = strMessage & intTemp & ","
Next
MsgBox strMessage
  • For Each ~ Nextステートメント
    For Each ~ Nextステートメントも、ForとNextの間の行を繰り返し実行するという意味になるが、For Eachでは配列の各要素に対して繰り返し操作を行う。
    この例では「For Each intTemp In intNumbers」としているので、配列変数intNumbersの各要素に対して繰り返し実行するということになる。
    intNumbersの各要素はループが繰り返されるたびにintTempという変数に代入される。
For Each 取出し用変数 In 配列
:
Next

これは定番で使うことになる構文(ステートメント)だな。
多次元配列をFor Eachで回したら、「取出し用変数」に配列が入るんだろう。

動的配列

http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh06/cformwsh06_03.html

入れるデータ数によって、配列の大きさを変えられる。
=ジャストフィットサイズでメモリを無駄なく使うと。

VBScriptで動的配列を宣言するには次のようにする。

  0
  1
Option Explicit
Dim a()
Dimステートメントで変数名の後に()を書く。
このとき()内に数値を指定しないのがポイントである。

配列の大きさを数字て指定しなきゃいいだけと。

配列の添え字を取得する

http://www.whitire.com/vbs/tips0035.html

  • 配列に使用できる最大/最小の添え字を取得します。

【ソースコード】

  0
  1
  2
  3
  4
  5
Option Explicit
Dim strValue    ' 配列
 
strValue = Array("sun", "mon", "tue", "wed", "thu", "fri", "sat")
WScript.Echo "最小インデックスは " & LBound(strValue)
WScript.Echo "最大インデックスは " & UBound(strValue)

【実行結果】

最小インデックスは 0
最大インデックスは 6

配列から特定の文字列を抽出する

http://www.whitire.com/vbs/tips0036.html

配列の中から、特定の文字列が含まれる要素を抽出します。

【ソースコード】

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
Option Explicit
 
Dim strValue    ' 配列
Dim lngLoop     ' ループカウンタ
 
strValue = Array("sun", "mon", "tue", "wed", "thu", "fri", "sat")
For lngLoop = LBound(strValue) To UBound(strValue)
    WScript.Echo "配列(" & lngLoop & "):" & strValue(lngLoop)
Next
 
WScript.Echo "上記の配列で「e」が含まれるものは"
strValue = Filter(strValue, "e")
For lngLoop = LBound(strValue) To UBound(strValue)
    WScript.Echo " 配列(" & lngLoop & "):" & strValue(lngLoop)
Next

【実行結果】

配列(0):sun
配列(1):mon
配列(2):tue
配列(3):wed
配列(4):thu
配列(5):fri
配列(6):sat
上記の配列で「e」が含まれるものは
 配列(0):tue
 配列(1):wed
  0

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-01-20 (日) 23:30:00 (3909d)