Como usar a instrução While…Wend no VBA?

No VBA (Visual Basic for Applications), a instrução `While…Wend` é uma estrutura de repetição utilizada para executar um bloco de código enquanto uma determinada condição for verdadeira. No entanto, essa construção é menos comum atualmente, pois muitas vezes se prefere o uso de `Do While…Loop`, que oferece maior flexibilidade. Ainda assim, vou explicar como usar `While…Wend` e dar um exemplo.

Estrutura Básica do While…Wend

A estrutura básica do `While…Wend` é a seguinte:

While condição
    ' Código a ser executado enquanto a condição for verdadeira
Wend

Como Funciona

  • Avaliação da Condição: Antes de cada iteração, o VBA avalia a condição. Se a condição for verdadeira, o bloco de código dentro de `While` e `Wend` é executado.
  • Execução do Bloco de Código: Se a condição é verdadeira, o VBA executa o bloco de código dentro da estrutura.
  • Reavaliação da Condição: Após o término do bloco de código, a condição é reavaliada.
  • Saída do Loop: Se a condição for falsa, o fluxo de execução continua após o `Wend`.

Exemplo de Uso

Imagine que você quer somar os números de 1 a 10. Você pode fazer isso usando `While…Wend` da seguinte maneira:

Sub ExemploWhileWend()
    Dim i As Integer
    Dim soma As Integer
    
    i = 1
    soma = 0
    
    While i <= 10
        soma = soma + i
        i = i + 1
    Wend
    
    MsgBox "A soma de 1 a 10 é: " & soma
End Sub

Nota

É importante garantir que a condição eventualmente se torne falsa para evitar loops infinitos. No exemplo acima, isso é garantido com a linha `i = i + 1`, que incrementa `i` a cada iteração.

Alternativas

Como mencionei, `While…Wend` não é muito usado em programação VBA moderna, em favor de estruturas como `Do While…Loop`, que são mais flexíveis:

Do While condição
    ' Código a ser executado
Loop

Ou até mesmo a variante `Do…Loop Until`:

Do
    ' Código a ser executado
Loop Until condição

Essas alternativas permitem um melhor controle do fluxo e a possibilidade de testar a condição no final do loop (`Do…Loop Until`) ou no início (`Do While…Loop`), proporcionando mais flexibilidade.

Unlock Your Potential

Excel

Basic - Advanced

Access

Access Basic - Advanced

Power BI

Power BI Basic - Advanced

Help us grow the project