Do While VBA: Guia Completo com Exemplos
No VBA (Visual Basic for Applications), os loops são fundamentais para automatizar tarefas repetitivas no Excel, Word e outros aplicativos do Microsoft Office. Entre os tipos de loops disponíveis, o Do While se destaca por sua flexibilidade, permitindo que um bloco de código seja executado repetidamente enquanto uma condição for verdadeira.
Neste artigo, você encontrará um guia completo sobre Do While no VBA, abordando sua sintaxe, exemplos práticos, boas práticas e comparações com outros loops. Ao final, você estará apto a utilizar essa estrutura com eficiência em seus projetos.
- O Que é o Do While no VBA?
- Sintaxe do Do While VBA
- Diferença entre Do While e Do Until
- Exemplos Práticos do Do While VBA
- Evitando Erros e Loops Infinitos
- Comparação entre Do While, For Next e For Each
- Conclusão
O Que é o Do While VBA?
O Do While é um loop condicional que executa um bloco de código enquanto a condição especificada for verdadeira. Caso a condição seja falsa desde o início, o loop pode nunca ser executado.
Formas de uso:
Existem duas formas de utilizar o Do While no VBA:
- Do While…Loop: Verifica a condição antes de executar o bloco de código.
- Do…Loop While: Executa o código pelo menos uma vez antes de verificar a condição.
Sintaxe do Do While VBA
Confira a seguir a sintaxe do loop Do While no VBA para suas diferentes maneiras de uso.
Do While…Loop (Verifica a condição antes)
'exceleasy.com.br Dim i As Integer i = 1 Do While i <= 10 Debug.Print "Número: " & i i = i + 1 Loop
Do…Loop While (Executa pelo menos uma vez)
'exceleasy.com.br Dim i As Integer i = 1 Do Debug.Print "Número: " & i i = i + 1 Loop While i <= 10
Observe que a principal diferença entre essas duas abordagens é que Do…Loop While sempre será executado ao menos uma vez, pois a verificação ocorre no final do loop.
Diferença entre Do While e Do Until no VBA
Outro ponto importante para se atentar é a diferença entre os loops Do While e Do Until. Neste caso, o Do While repete o código enquanto a condição for verdadeira, enquanto o Do Until repete até que a condição seja verdadeira. Confira os exemplos:
Exemplo com Do While
'exceleasy.com.br Dim i As Integer i = 1 Do While i <= 10 Debug.Print i i = i + 1 Loop
Exemplo com Do Until
'exceleasy.com.br Dim i As Integer i = 1 Do Until i > 10 Debug.Print i i = i + 1 Loop
Observe que embora ambos executem o mesmo número de iterações, o loop Do Until é mais intuitivo quando queremos parar a execução ao atingir uma determinada condição.
Exemplos Práticos do Do While VBA
Agora que já passamos pelo conceito básico do Do While no VBA, vamos conferir alguns exemplos práticos para aplicação deste loop em suas planilhas.
1. Inserindo valores sequenciais em uma coluna
Sub exemplo1() 'exceleasy.com.br Dim i As Integer i = 1 Do While i <= 10 Cells(i, 1).Value = i i = i + 1 Loop End Sub
Como o código funciona?
Este código preenche a coluna A com os números de 1 a 10. O loop começa com i = 1 e insere esse valor na célula correspondente. A cada repetição, i aumenta em 1 até que atinja 10, encerrando o loop. Em outras palavras, enquanto i for menor ou igual a 10, o loop é executado.
2. Loop Do While VBA com InputBox
Sub exemplo2() 'exceleasy.com.br Dim nome As String Do nome = InputBox("Digite seu nome:") Loop While nome = "" MsgBox "Bem-vindo, " & nome End Sub
Como o código funciona?
Este loop solicita ao usuário que digite um nome através de uma InputBox. Se o campo for deixado em branco (“”), o loop continua pedindo até que algo seja digitado. Quando um nome é inserido, o programa exibe uma mensagem de boas-vindas.
3. Loop até encontrar um valor específico
Sub exemplo3() 'exceleasy.com.br Dim i As Integer i = 1 Do While Cells(i, 1).Value <> "12/03/2025" i = i + 1 Loop MsgBox "A data procurada '12/03/2025' está na linha: " & i End Sub
Como o código funciona?
Este código percorre a coluna A procurando a data 12/03/2025. Neste exemplo utilizamos uma data, mas poderia ser um número, letra, palavra ou caractere. O loop verifica linha a linha enquanto o valor da célula é diferente da data procurada (12/03/2025). Quando encontrada, exibe em uma caixa de mensagem a linha onde está localizada a data.
4. Contando números pares em um intervalo
Sub exemplo4() 'exceleasy.com.br Dim i As Integer, contador As Integer contador = 0 i = 1 ' Começa na linha 1 'Loop até encontrar a primeira célula vazia na coluna A Do While Cells(i, 1).Value <> "" 'Verifica se o número na célula é par If Cells(i, 1).Value Mod 2 = 0 Then contador = contador + 1 i = i + 1 'Passa para a próxima linha Loop 'Exibe a quantidade de números pares encontrados MsgBox "Números pares encontrados: " & contador End Sub
Como o código funciona?
Neste exemplo, utilizando o loop Do While para percorrer toda a coluna A até encontrar a primeira célula vazia. Dentro do loop, utilizamos o operador MOD que retorna o resto da divisão. Se i Mod 2 = 0, significa que i é par e o contador aumenta. Ao final, uma mensagem exibe o total de números pares.
5. Formatar apenas valores pares de um intervalo
No exemplo anterior, utilizamos o loop Do While para contar apenas os números pares de um intervalo. Do mesmo modo, podemos utilizar este loop para formatar apenas os valores pares e para isso, utilizamos o código:
Sub Exemplo5() ' exceleasy.com.br Dim i As Integer i = 1 ' Começa na linha 1 ' Loop até encontrar a primeira célula vazia na coluna A Do While Cells(i, 1).Value <> "" ' Verifica se o número na célula é par If Cells(i, 1).Value Mod 2 = 0 Then ' Aplica a formatação With Cells(i, 1) .Interior.Color = RGB(0, 176, 80) ' Fundo verde .Font.Color = RGB(255, 255, 255) ' Texto branco .Font.Bold = True ' Negrito opcional End With End If i = i + 1 ' Passa para a próxima linha Loop End Sub
Como o código funciona?
Neste exemplo, utilizando o loop Do While para percorrer toda a coluna A até encontrar a primeira célula vazia. Dentro do loop, utilizamos o operador MOD que retorna o resto da divisão. Se i Mod 2 = 0, então significa que o número é par e, neste caso, aplicamos a formatação na célula ativa.
6. Somar valores de um intervalo
Sub exemplo6() 'exceleasy.com.br Dim total As Double Dim i As Integer total = 0 i = 1 Do While i <= 10 total = total + Cells(i, 1).Value i = i + 1 Loop Cells(12, 1).Value = total MsgBox "A soma dos valores de A1:A10 é: " & total End Sub
Como o código funciona?
Este código soma os valores das células A1 até A10. O loop percorre cada célula, adicionando seu valor à variável total. Após o loop, o total é armazenado em A12.
7. Aplicar formatação enquanto um critério for atendido
Sub exemplo7() 'exceleasy.com.br Dim i As Integer i = 1 Do While Cells(i, 1).Value <> "" If Cells(i, 1).Value < 40 Then Cells(i, 1).Font.Color = RGB(255, 0, 0) 'Texto vermelho para valores abaixo de 40 End If i = i + 1 Loop End Sub
Como o código funciona?
Este loop percorre as células na coluna A , formatando em vermelho qualquer valor menor que 40. O loop continua até encontrar uma célula vazia, evitando erros em áreas sem dados.
Do While VBA: Evitando Erros e Loops Infinitos
Conforme mostrado anteriormente, os loops Do While são essenciais para repetir blocos de código enquanto uma condição for verdadeira. No entanto, se essa condição nunca for falsa, o loop pode se tornar infinito, causando travamentos no Excel, alto consumo de processamento e até a necessidade de encerrar a execução manualmente. Para evitar esses problemas, é fundamental adicionar regras de controle no código.
Use Exit Do para sair do loop manualmente
No exemplo abaixo, o código cria um loop infinito (Do While True), mas inclui uma condição (If i > 100 Then Exit Do) para garantir que o loop seja encerrado após 100 iterações. Isso evita que o código trave em um loop infinito, garantindo controle sobre a execução.
'exceleasy.com.br Dim i As Integer i = 1 Do While True Debug.Print i i = i + 1 If i > 100 Then Exit Do Loop
Sempre incremente variáveis de controle corretamente
O exemplo abaixo mostra outro caso comum de erro em um loop onde a variável i não é incrementada dentro do bloco, resultando em um loop infinito.
'exceleasy.com.br Dim i As Integer i = 1 Do While i <= 10 Debug.Print i 'Não foi incrementado i, causando um loop infinito! Loop
O código corrigido inclui i = i + 1 para garantir que o loop avance corretamente.
'exceleasy.com.br Dim i As Integer i = 1 Do While i <= 10 Debug.Print i i = i + 1 Loop
O exemplo de erro mostra um loop onde a variável i não é incrementada dentro do bloco, resultando em um loop infinito. O código corrigido inclui i = i + 1 para garantir que o loop avance corretamente.
Ative Application.ScreenUpdating = False
O exemplo abaixo desativa a atualização da tela antes de executar um loop que preenche 5000 células no Excel. Isso melhora o desempenho do código, pois evita que a planilha seja constantemente redesenhada a cada iteração. No final, a atualização da tela é reativada com Application.ScreenUpdating = True.
'exceleasy.com.br Application.ScreenUpdating = False Dim i As Integer i = 1 Do While i <= 5000 Cells(i, 1).Value = i i = i + 1 Loop Application.ScreenUpdating = True
Comparação entre Do While VBA, For Next e For Each
Se você chegou até aqui, então já deve saber que o loop Do While é amplamente utilizado no VBA para repetir um bloco de código enquanto uma condição for verdadeira. No entanto, muitos usuário têm dúvidas sobre quando usá-lo em comparação com outras estruturas de repetição, como For Next e For Each. A escolha do loop ideal depende do tipo de controle necessário no código. A tabela abaixo resume as principais diferenças entre eles:
Loop | Melhor Uso |
---|---|
Do While | Quando a condição de saída pode mudar dinamicamente. |
Do Until | Quando sabemos a condição final de parada. |
For Next | Para iterar um número fixo de vezes. |
For Each | Para percorrer coleções como células e arrays. |
exceleasy.com.br |
Dica: Se quiser conhecer melhor outros tipos de loops disponíveis no VBA e entender suas aplicações, confira nosso artigo completo: Loops VBA no Excel.
Conclusão
O Do While VBA é uma ferramenta poderosa para automação de tarefas no Excel e em outros aplicativos do Microsoft Office. Compreender sua sintaxe, variações e boas práticas permitirá que você escreva códigos mais eficientes e otimizados.
Agora que você aprendeu tudo sobre Do While, que tal testar alguns exemplos no seu próprio código VBA? Se tiver dúvidas, deixe um comentário!
Confira também:
- O que é VBA? (Um Guia para Iniciantes)
- Como Abrir VBA no Excel: Guia Completo para Iniciantes
- Range e Cells VBA: Como usar Intervalos no VBA?
- Como Copiar e Colar no VBA – Passo a Passo
- Como Aprender VBA? Um Guia para Iniciantes
- Como manipular planilhas do Excel com o VBA (com exemplos)
Referências externas: