VBSの配列の扱い方

*参考サイト [#af56d522]

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

**配列の宣言 [#z74b69d8]
http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh06/cformwsh06_01.html

#code(VBScript){{
Dim a(5)
}}
のようにカッコをつければ配列になる。

**ループで配列操作 [#l36695d1]
http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh06/cformwsh06_02.html

配列内のデータ操作は、
--For ~ Nextステートメント
--For Each ~ Nextステートメント = 配列の各要素について繰り返しを行う
で順次の操作ができる。

#code(VBScript){{
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」で配列を回してるサンプル

#code(VBScript){{
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で回したら、「取出し用変数」に配列が入るんだろう。

**動的配列 [#ac7b2264]
http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh06/cformwsh06_03.html

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

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

#code(VBScript){{
Option Explicit
Dim a()
}}

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

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

**配列の添え字を取得する [#m19a7c1c]
http://www.whitire.com/vbs/tips0035.html

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

【ソースコード】
#code(VBScript){{
Option Explicit
Dim strValue    ' 配列

strValue = Array("sun", "mon", "tue", "wed", "thu", "fri", "sat")
WScript.Echo "最小インデックスは " & LBound(strValue)
WScript.Echo "最大インデックスは " & UBound(strValue)
}}

【実行結果】
 最小インデックスは 0
 最大インデックスは 6

**配列から特定の文字列を抽出する [#z0d08ac4]
http://www.whitire.com/vbs/tips0036.html

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

【ソースコード】
#code(VBScript){{
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



#code(VBScript){{

}}

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS