This browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Download Microsoft Edge
More info about Internet Explorer and Microsoft Edge
Repeats a block of
statements
while a condition is
True
or until a condition becomes
True
.
Syntax
Do
[{
While
|
Until
}
condition
]
[
statements
]
[
Exit Do
]
[
statements
]
Or, you can use this syntax:
[
statements
]
[
Exit Do
]
[
statements
]
Loop
[{
While
|
Until
}
condition
]
The
Do Loop
statement syntax has these parts:
Description
condition
Optional.
Numeric expression
or
string expression
that is
True
or
False
. If
condition
is
Null
,
condition
is treated as
False
.
statements
One or more statements that are repeated while, or until,
condition
is
True
.
Any number of
Exit Do
statements may be placed anywhere in the
Do…Loop
as an alternate way to exit a
Do…Loop
.
Exit Do
is often used after evaluating some condition, for example,
If…Then
, in which case the
Exit Do
statement transfers control to the statement immediately following the
Loop
.
When used within nested
Do…Loop
statements,
Exit Do
transfers control to the loop that is one nested level above the loop where
Exit Do
occurs.
Example
This example shows how
Do...Loop
statements can be used. The inner
Do...Loop
statement loops 10 times, asks the user if it should keep going, sets the value of the flag to
False
when they select
No
, and exits prematurely by using the
Exit Do
statement. The outer loop exits immediately upon checking the value of the flag.
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
Total = Total + Counter ' Exit Do Lands here.
Counter = 0
Loop Until Check = False ' Exit outer loop immediately.
MsgBox "Counted to: " & Total
End Sub
See also
Using Do...Loop statements
Data types
Statements
Support and feedback
Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.