次の方法で共有


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 に評価される数式または文字列式です。 conditionNull の場合、conditionFalse として扱われます。
statements conditionTrue の間または 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 のサポートおよびフィードバックを参照してください。