![](https://codky.com/wp-content/uploads/2024/11/2323-1024x576.png)
A instrução `Do…Loop` em VBA (Visual Basic for Applications) é utilizada para criar loops que repetem um bloco de código enquanto uma condição for verdadeira (`Do While`) ou até que uma condição se torne verdadeira (`Do Until`). A estrutura do loop permite tanto testar a condição no início quanto no final do loop, dependendo do que é mais adequado ao seu caso de uso. Vou explicar como usar cada uma das variações:
1. `Do While…Loop`
Este loop repete um bloco de código enquanto uma condição for verdadeira. A condição é verificada antes de o bloco ser executado.
Dim i As Integer
i = 1
Do While i <= 5
Debug.Print "O valor de i é: " & i
i = i + 1
Loop
Neste exemplo, a mensagem será exibida no console de depuração enquanto `i` for menor ou igual a 5.
2. `Do…Loop While`
Neste caso, o código dentro do loop é executado pelo menos uma vez, pois a condição é verificada após a execução do bloco.
Dim i As Integer
i = 1
Do
Debug.Print "O valor de i é: " & i
i = i + 1
Loop While i <= 5
3. `Do Until…Loop`
Este loop repete o bloco de código até que a condição se torne verdadeira. A condição é verificada no início do loop.
Dim i As Integer
i = 1
Do Until i > 5
Debug.Print "O valor de i é: " & i
i = i + 1
Loop
Neste exemplo, o loop continua enquanto `i` for menor ou igual a 5.
4. `Do…Loop Until`
Neste formato, o bloco de código é executado pelo menos uma vez, porque a condição é verificada no final do loop.
Dim i As Integer
i = 1
Do
Debug.Print "O valor de i é: " & i
i = i + 1
Loop Until i > 5
Considerações
- Loops infinitos: Tenha cuidado ao usar loops `Do…Loop`. Certifique-se de que a condição do loop será eventualmente atendida, caso contrário, você pode acabar com um loop infinito.
- Controle de Loop: É uma prática comum usar uma variável de controle como `i` nos exemplos acima, e também é comum incrementar ou modificar essa variável dentro do loop para garantir que a condição de término seja eventualmente satisfeita.
Essa flexibilidade nos permite usar `Do…Loop` de maneira muito versátil para resolver problemas diversos em VBA.