Instrução Do…Loop

Repete um bloco de instruções enquanto uma condição é Verdadeira ou até que ela se torne Verdadeira.

Sintaxe

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

'or use below syntax

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

Argumentos:

  • Condição: Expressão numérica ou de string que é Verdadeira ou Falsa. Se a condição for Nula, será tratada como Falsa.

  • Instruções: Uma ou mais instruções que são repetidas enquanto uma condição é Verdadeira ou até que ela se torne Verdadeira.

Comentários

A instrução Exit Do só pode ser usada em uma estrutura de controle Do...Loop para fornecer uma maneira alternativa de sair dessa estrutura. É possível incluir qualquer número de instruções Exit Do em qualquer lugar da instrução Do...Loop. Geralmente usada com a avaliação de alguma condição (por exemplo, If...Then), a instrução Exit Do transfere o controle para a instrução imediatamente após o Loop.

Quando usada dentro de instruções Do...Loop aninhadas, a instrução Exit Do transfere o controle para o loop que está aninhado um nível acima do loop em que ocorre.

Os exemplos a seguir ilustram o uso da instrução Do...Loop:

Exemplo 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 

Exemplo 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.

Exemplo 3:

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

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

Exemplo 4:

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

Exemplo 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

Exemplo 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