【VBScript】(無限)ループ・繰り返し処理[While-Wend文]の使い方


この記事はプロモーションを含みます。

VBScript

ホーム > VBScript 逆引きリファレンス

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文は、通常のループ処理のみを使用し、無限ループしつつ、特定の条件に合致する場合のみループを抜けるような処理を行いたい場合は、素直に別のループ文を使用した方がいいと思います。

関連記事

コメント

タイトルとURLをコピーしました