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 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?

Inserindo valores sequenciais em uma coluna

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?

Loop Do While VBA com InputBox

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?

Loop Do While VBA até encontrar um valor específico

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?

Contar números pares no VBA

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?

Formatar apenas valores pares de um intervalo

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?




Somar valores de um intervalo

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?

Loop Do While VBA para aplicar formatação enquanto um critério for atendido

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:

Referências externas:




Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *