Compartilhar via


Instrução Do...Loop

Repete um bloco de instruções enquanto uma condição é True ou até uma condição se tornar True.

Sintaxe

Fazer [{ Enquanto | até } condição ] [ instruções ] [ Sair Do ] [ instruções ] Loop

Ou você pode usar esta sintaxe:

Fazer [ instruções ] [ Sair Do ] [ instruções ] Loop [{ Enquanto | até } condição ]

A sintaxe da instrução Do Loop possui estas partes:

Parte Descrição
condição Opcional. Expressão numérica ou expressão de cadeia de caracteres que é True ou False. Se condição for Null, a condição será tratada como False.
instruções Uma ou mais instruções que são repetidas enquanto a condição for True ou até ela se tornar True.

Comentários

É possível inserir quantas instruções Exit Do você quiser, em qualquer lugar de Do…Loop, como uma alternativa para sair de um Do…Loop. Normalmente, Exit Do é usado após a avaliação de alguma condição, por exemplo If...Then, e, nesse caso, a instrução Exit Do transfere o controle para a instrução imediatamente após Loop.

Quando usado nas instruções Do…Loop aninhadas, o Exit Do transfere o controle para o loop que está um nível de aninhamento acima do loop em que Exit Do ocorre.

Exemplo

Este exemplo mostra como as instruções Do...Loop podem ser usadas. A instrução Do...Loop interna percorre o loop 10 vezes, pergunta ao usuário se ela deve continuar, define o valor do sinalizador como False quando ele seleciona Não e sai prematuramente usando a instrução Exit Do. O loop externo sai imediatamente após a verificação do valor do sinalizador.

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

Confira também

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.