Do...Loop ステートメントを使用する

Do...Loop ステートメントを使用すると、ステートメントのブロックを無限回数実行できます。 条件が True の間または True になるまで、ステートメントを繰り返し実行します。

条件が True の間ステートメントを繰り返す

While キーワードを使用して Do...Loop ステートメントで条件を調べるには、2 つの方法があります。 ループに入る前に条件を調べる方法と、ループが少なくとも 1 回は実行された後で条件を調べる方法です。

次の ChkFirstWhile プロシージャでは、ループに入る前に条件を調べます。 myNum が 20 ではなく 9 に設定されている場合、ループ内のステートメントは実行されません。 ChkLastWhile プロシージャでは、条件が False になる前に、ループ内のステートメントが 1 回だけ実行されます。

Sub ChkFirstWhile() 
    counter = 0 
    myNum = 20 
    Do While myNum > 10 
        myNum = myNum - 1 
        counter = counter + 1 
    Loop 
    MsgBox "The loop made " & counter & " repetitions." 
End Sub 
 
Sub ChkLastWhile() 
    counter = 0 
    myNum = 9 
    Do 
        myNum = myNum - 1 
        counter = counter + 1 
    Loop While myNum > 10 
    MsgBox "The loop made " & counter & " repetitions." 
End Sub

条件が True になるまでステートメントを繰り返す

Until キーワードを使用して Do...Loop ステートメントで条件を調べるには、2 つの方法があります。 ループに入る前に条件を調べる方法と ( ChkFirstUntil プロシージャ)、ループが少なくとも 1 回は実行された後で調べる方法です ( ChkLastUntil プロシージャ)。 条件が False の間は、ループを続けます。

Sub ChkFirstUntil() 
    counter = 0 
    myNum = 20 
    Do Until myNum = 10 
        myNum = myNum - 1 
        counter = counter + 1 
    Loop 
    MsgBox "The loop made " & counter & " repetitions." 
End Sub 
 
Sub ChkLastUntil() 
    counter = 0 
    myNum = 1 
    Do 
        myNum = myNum + 1 
        counter = counter + 1 
    Loop Until myNum = 10 
    MsgBox "The loop made " & counter & " repetitions." 
End Sub

ループの内部から Do...Loop ステートメントを終了する

Exit Do ステートメントを使用して Do...Loop を終了できます。 たとえば、無限ループを終了するには、If...Then...Else ステートメントまたは Select Case ステートメントの True ステートメント ブロックの中で Exit Do ステートメントを使用します。 条件が False の場合、ループは通常どおり実行されます。

次の例では、myNum には無限ループを作成する値が代入されています。 If...Then...Else ステートメントはこの条件を調べてから終了し、無限ループにならないようにしています。

Sub ExitExample() 
    counter = 0 
    myNum = 9 
    Do Until myNum = 10 
        myNum = myNum - 1 
        counter = counter + 1 
        If myNum < 10 Then Exit Do 
    Loop 
    MsgBox "The loop made " & counter & " repetitions." 
End Sub

注意

無限ループを停止するには、Esc キーまたは Ctrl + Break キーを押します。

関連項目

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。