VBScriptにおける「While – Wend」文の使い方を解説します。
合わせて、無限ループさせる方法も解説したいと思います。
はじめに
VBScriptで使用出来る While系の構文ですが、以下のように様々なものがあります。
本記事では、最もシンプルな「While – Wend」文の使用方法について説明します。
書式
While – Wend文の書式です。
While(条件式) 処理 Wend
こちらの While – Wend文は、条件式が真(True)なら、ループ処理が続けられます。
条件式が偽(False)となったタイミングで、ループが終了します。
>初めから、偽(False)の場合は、ループ内の処理は実行されません。
では、実際に書式やサンプルを見ていきましょう。
サンプル
以下は、ループ回数を表示しつつ、指定した回数分ループするサンプルになります。
Option Explicit
' ループを終了する回数
Const LOOP_END = 5
' ループの回数
Dim loop_count
While(loop_count < LOOP_END)
loop_count = loop_count + 1
WScript.Echo("ループ回数:" & loop_count)
Wend
サンプルの実行結果になります。
ループ回数:1 ループ回数:2 ループ回数:3 ループ回数:4 ループ回数:5
無限ループさせる
ここでは、無限ループさせる方法を説明します。
方法は簡単で、条件式を「(True)」と記述するだけです。
しかし、もう1つ重要なポイントがあります。
それは、ループから抜ける処理を記述するということです。
でなければ、永遠にループから抜けれず処理が終わりません。
ここで問題があり、While – Wend文には、Exit系(ループから抜ける)処理がありません。
なので、スクリプト自体を強制終了させます。
しかし、ループ後に何かしらの処理を行いたい場合は、スクリプトが終了してしまうと実行されないので、ループ処理を関数化し、関数から抜けることでループを抜ける方法を取ります。
では、上記2つのパターンをご紹介したいと思います。
まずは、スクリプト自体を終了させるサンプルになります。
ループ回数が5回になった場合にスクリプトの終了処理を呼び出しています。
Option Explicit
' ループを終了する回数
Const LOOP_END = 5
' ループの回数
Dim loop_count
While(True)
loop_count = loop_count + 1
WScript.Echo("ループ回数:" & loop_count)
If(loop_count = LOOP_END)Then
' スクリプトの終了
WScript.Quit
End If
Wend
サンプルの実行結果になります。
ループ回数:1 ループ回数:2 ループ回数:3 ループ回数:4 ループ回数:5
次に、ループを関数化し、特定の条件で関数自体を抜けるサンプルになります。
Option Explicit
' ループを終了する回数
Const LOOP_END = 5
' ループの回数
Dim loop_count
' ループを実行する関数の呼び出し
Call fncLoop()
WScript.Echo("ループ後の処理")
' スクリプトの終了
WScript.Quit
Function fncLoop()
While(True)
loop_count = loop_count + 1
WScript.Echo("ループ回数:" & loop_count)
If(loop_count = LOOP_END)Then
' 関数の終了
Exit Function
End If
Wend
End Function
サンプルの実行結果になります。
ループ後に記述した処理も実行されていることが分かります。
ループ回数:1 ループ回数:2 ループ回数:3 ループ回数:4 ループ回数:5 ループ後の処理
記事は以上になります。
While – Wend文の基本的な使い方に加えて、無限ループさせる方法も説明しましたが、
Exit系の処理が無いため、かなり可読性の悪いソースコードになってしまいました。
While – Wend文は、通常のループ処理のみを使用し、無限ループしつつ、特定の条件に合致する場合のみループを抜けるような処理を行いたい場合は、素直に別のループ文を使用した方がいいと思います。
コメント