Do...Loop ステートメント
条件が True の間または True になるまで、一連のステートメントを繰り返し実行します。
構文
Do [{ While | Until } condition ] [ statements ] [ Exit Do ] [ statements ] Loop
次の構文も使用できます。
Do [ statements ] [ Exit Do ] [ statements ] Loop [{ While | Until } condition ]
Do Loop ステートメントの構文には、次の指定項目があります。
指定項目 | 説明 |
---|---|
condition | 省略可能。 True または False に評価される数式または文字列式です。 condition が Null の場合、condition は False として扱われます。 |
statements | condition が True の間または True になるまで繰り返し実行する 1 つ以上のステートメントです。 |
解説
Do…Loop を終了する代替方法として、Do…Loop 内の任意の場所に任意の数の Exit Do ステートメントを配置できます。 Exit Do ステートメントに到達すると、Loop の直後にあるステートメントに制御が移される Exit Do は、If…Then など、何らかの条件を評価した後によく使用されます。
入れ子になった Do…Loop ステートメント内で Exit Do を使用する場合は、Exit Do に到達したループの 1 つ上のレベルのループに制御が移ります。
例
次の例では、Do...Loop ステートメントの使用方法を示します。 内部 Do...Loop ステートメントは 10 回ループされ、ユーザーに継続するかどうかをたずね、ユーザーが No を選択すると、フラグの値を False に設定し、Exit Do ステートメントを使用して、処理途中で終了します。 外側のループは、フラグの値を確認して直ちに終了します。
Public Sub LoopExample()
Dim Check As Boolean, Counter As Long, Total As Long
Check = True: Counter = 0: Total = 0 ' Initialize variables.
Do ' Outer loop.
Do While Counter < 20 ' Inner Loop
Counter = Counter + 1 ' Increment Counter.
If Counter Mod 10 = 0 Then ' Check in with the user on every multiple of 10.
Check = (MsgBox("Keep going?", vbYesNo) = vbYes) ' Stop when user click's on No
If Not Check Then Exit Do ' Exit inner loop.
End If
Loop
Total = Total + Counter ' Exit Do Lands here.
Counter = 0
Loop Until Check = False ' Exit outer loop immediately.
MsgBox "Counted to: " & Total
End Sub
関連項目
サポートとフィードバック
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。