技術情報コラムColumn

VBScriptでループ制御

技術解説
前回のコラム「VBScriptで条件分岐処理 その2」では、Select文による条件分岐処理を紹介いたしました。 今回のVBScript入門の第5回は、条件が一致するまで同じ処理を繰り返すループ制御の方法について説明いたします。 では早速、スクリプトを作成してみましょう。今回は例としてコンピュータが1から10の数字のいずれかを選択し、3回以内にコンピュータが選択した数字を当てるというスクリプトです。

① メモ帳を起動して、下図のように入力します。

VBScript    
② 「名前を付けて保存」を選択し、任意のフォルダに「第5回.vbs」という名前で保存します。
VBScript    
③ メモ帳を終了し、エクスプローラで「第5回.vbs」を保存したフォルダを開きます。
VBScript    
④ 「第5回.vbs」ファイルをダブルクリックして実行します。ダイアログボックスが表示されるので1~10の任意の数字を入力し、「OK」ボタンをクリックします。
VBScript    
⑤ 入力した数字によって、以下のいずれかのメッセージが表示されます。
VBScript VBScript
   
⑥ 3回以内に数字を当てることが出来れば「当たり」メッセージ、当てることが出来なければ「残念」メッセージが表示されます。
VBScript VBScript

では、スクリプトの内容について説明いたします。 「Do文」の構文は以下の通りになります。

VBScript   赤色の枠で囲んだ部分は、式を記述します。
今回の例では、5行目のDo While (intCount < 3)で変数intCountの値が3未満なら19行目のLoop文までの処理を繰り返し実行するという内容です。
青色の枠で囲んだ部分は、ループ処理を記述します。 ループ処理では、6行目から7行目で回答を促すダイアログボックスを表示し、回答を変数intInputKeyに代入します。
9行目から16行目ではIf文を使ってintInputKeyの数値を2行目から3行目でコンピュータが選択した数値を比較し、数値が同じなら「当たり」のメッセージを表示してスクリプトを終了します。数値が異なれば「はずれ」のメッセージを表示します。
18行目では回答した数値が間違っていたので回答回数を格納する変数をカウントアップし、5行目のDo While文に戻ります。
「Do While文」は特定の数値や文字列を入力するまで同じような処理を継続したい場合、変数が一定の値になるまで処理を継続したい場合などに利用すると便利です。 条件を満たしていないがループ処理を抜けたい場合、ループ処理の中で「Exit Do」文を記述すると、Loop文の次の行に処理を移行できます。 また、今回のように「Wscript.Quit」文を記述するとスクリプトそのものを終了することもできます。
今回はここまでです。また次回のコラムをお待ちください。

【参考】

・ Rnd()関数について   Rnd()関数は、0以上1未満のランダムな数値を返す関数です。 Rnd()関数を単独で使うとスクリプトを実行する度、毎回、同じ乱数を生成する為、Rnd()関数実行前にRandomize()関数を実行します。 今回のように任意の範囲の乱数を生成したい場合は、下記、式で生成できます。 CInt((乱数で生成できる最大値 -乱数で生成できる最小値+ 1) * Rnd()) +乱数で生成できる最小値 3から8の数値を生成したい場合は、「Cint(Int(8 – 3 + 1) * Rnd()) + 3」という式で生成できます。
   
・ 式の途中で改行する方法について   1つの式が長くなってスクロールしないと表示できなくなるとスクリプトの見通しが悪くなります。 そのような時には式の途中で「 _」(半角スペースとアンダーバー)を記入します。 長い文字列の途中で改行する場合は、   ”文字列1” & _ “文字列2”   のように書けば文字列を2行に分けて書くこともできます。

◆他の回のコラムを見る

第1回 VBScriptで簡単なスクリプトを書こう
第2回 VBScriptで文字の入力
第3回 VBScriptで条件分岐処理
第4回 VBScriptで条件分岐処理 その2
第6回 バッチファイルでのVBScriptの利用
第7回 VBScriptでのコマンドライン引数の使い方