Sentencia Do...Loop

Repite un bloque de sentencias mientras una condición es True o hasta que una condición se convierte en True.

Sintaxis

Do {While | Until} condition
   [statements]
   [Exit Do]
   [statements]
Loop               

'or use below syntax

Do
  [statements] 
  [Exit Do]
  [statements]
Loop {While | Until} condition

Argumentos:

  • Condition: expresión numérica o de cadena que es True o False. Si la condición es nula, esta se trata como False.

  • Statements: una o más sentencias que se repiten mientras la condición es True o hasta que lo sea.

Observaciones

Exit Do solo se puede utilizar dentro de una estructura de control Do...Loop para proporcionar una forma alternativa de salir de Do...Loop. Se puede colocar cualquier cantidad de sentencias Exit Do en cualquier lugar de Do...Loop. Utilizado normalmente con la evaluación de una condición (por ejemplo, If...Then), Exit Do transfiere el control a la sentencia inmediatamente posterior al bucle.

Cuando se utiliza en sentencias Do...Loop anidadas, Exit Do transfiere el control al bucle que está anidado un nivel por encima del bucle donde se produce.

En los siguientes ejemplos se muestra el uso de la sentencia Do...Loop:

Ejemplo 1:

Dim flag , MyNum
flag = true  'initialises a variable
Do Until  flag= false
   MyNum = Int (6 * Rnd + 1)   ' Generate a random integer between 1 and 6.
   If MyNum = 4 Then
       flag=false 
  End If
Loop 

Ejemplo 2:

Dim Check, Counter
Check = True   'Initialize variables.
Counter = 0   ' Initialize variables.
Do                            ' Outer loop.
   Do While Counter < 20      ' Inner loop.
      Counter = Counter + 1   ' Increment Counter.
      If Counter = 10 Then    ' If condition is True...
         Check = False        ' set value of flag to False.
         Exit Do              ' Exit inner loop.
      End If
   Loop
Loop Until Check = False      ' Exit outer loop immediately.

Ejemplo 3:

Dim index
index = 0
Dim items(5)
items(0) = "Item1"
items(1) = "Item2"

Do While index < UBound(items)
        index = index + 1
Loop

Ejemplo 4:

Dim count
count = 0
Do 
    'Operations based on requirement 
    count = count + 1
Loop While count < 1 ' Will exit after one iteration.

Ejemplo 5:

Dim Val
Val =2
Do 
    If Val=5 Then Exit Do
    Val= Val+1
    'Operations based on requirement using value of Val
Loop While Val<10

Ejemplo 6:

Dim Row, Col
Row= 1
Col =1
Do
    Col =1 
    Do 
        'Operations based on requirement using Row and Col
        Col = Col +1
    Loop While Col<4
    Row = Row +1
Loop While Row<4