If, ElseIf e Else no VBA: Exemplos Práticos (Aula 5)

Aula 5 do curso gratuito de VBA do Excel. Nesta aula você aprenderá como usar If, ElseIf, Else e End If para fazer sua macro tomar decisões. O conteúdo é voltado para iniciantes e inclui código comentado, exemplos de aplicação no trabalho, uma classificação automática de vendas e exercícios.

Trilha de aprendizado: Índice do curso | ← Aula 4 — Variáveis no VBA | Aula 5 — Condições no VBA.

O que são condições If, ElseIf e Else no VBA?

Uma condição permite que o VBA escolha entre executar ou não executar determinadas instruções. Pense em uma regra de trabalho: se a venda atingiu a meta, mostre “Meta atingida”; caso contrário, mostre “Abaixo da meta”. O VBA usa expressões que resultam em True (verdadeiro) ou False (falso) para decidir qual bloco executar.

  • If: inicia uma verificação. O código dentro do bloco roda quando a condição é verdadeira.
  • Then: separa a condição das instruções que dependem dela.
  • ElseIf: testa uma nova condição caso as anteriores sejam falsas.
  • Else: oferece uma alternativa quando nenhuma condição anterior foi atendida.
  • End If: encerra uma estrutura de decisão com várias linhas.

Antes de começar: como preparar o Excel

Use o Excel instalado no computador, no Windows ou Mac. O Excel para a Web não executa macros VBA. Crie uma pasta de trabalho nova e vazia para os exercícios; algumas macros alteram células e não devem ser usadas na única cópia de um arquivo importante.

  1. Abra o Excel e crie uma pasta de trabalho vazia.
  2. No Windows, pressione Alt + F11 para abrir o Editor VBA. No Mac, abra o Visual Basic pela guia Desenvolvedor; os atalhos podem ser diferentes.
  3. No Editor VBA, escolha Inserir > Módulo. Use um módulo padrão para os exemplos.
  4. Digite Option Explicit uma única vez no início desse módulo, antes de qualquer procedimento. Essa instrução exige a declaração das variáveis.
  5. Cole os procedimentos abaixo sem repetir Option Explicit. Para executar, deixe o cursor dentro de uma macro e pressione F5 no editor; no Windows, também é possível executar pelo menu Desenvolvedor > Macros (Alt + F8).
  6. Ao terminar, salve como Pasta de Trabalho Habilitada para Macro do Excel (.xlsm). O formato .xlsx não preserva códigos VBA.

1. Como usar If Then no VBA

A forma mais simples verifica apenas uma condição. Se ela for falsa, o VBA segue em frente sem executar o bloco. Veja uma situação em que o estoque está abaixo do mínimo exigido.

Sub ExemploIfThen()
    Dim estoque As Long
    estoque = 3

    If estoque < 5 Then
        MsgBox "Atenção: estoque baixo!"
    End If
End Sub

Resultado esperado: aparece a mensagem Atenção: estoque baixo! porque 3 é menor que 5. Altere estoque = 3 para estoque = 8: a mensagem não aparece, porque a condição ficou falsa. As linhas recuadas facilitam a leitura, embora os espaços de indentação não mudem o resultado.

2. Como usar If Then Else no VBA

Use Else quando precisar definir dois caminhos: um para a condição verdadeira e outro para a falsa. Por exemplo, a meta mensal de um vendedor é de R$ 1.000.

Sub ExemploIfElse()
    Dim vendas As Currency
    Dim meta As Currency

    vendas = 1200
    meta = 1000

    If vendas >= meta Then
        MsgBox "Meta atingida!"
    Else
        MsgBox "Abaixo da meta."
    End If
End Sub

Resultado esperado: Meta atingida! Como R$ 1.200 é maior que R$ 1.000, o VBA executa apenas o primeiro caminho. Se alterar vendas = 1200 para vendas = 900, o resultado será Abaixo da meta.

3. Como usar ElseIf com várias condições

Quando uma decisão tem três ou mais resultados possíveis, use ElseIf. O VBA analisa os testes na ordem em que aparecem e executa somente o primeiro bloco cuja condição é verdadeira.

Sub ExemploElseIf()
    Dim vendas As Currency
    vendas = 1800

    If vendas >= 1500 Then
        MsgBox "Meta superada!"
    ElseIf vendas >= 1000 Then
        MsgBox "Meta atingida!"
    Else
        MsgBox "Abaixo da meta."
    End If
End Sub

Resultado esperado: Meta superada! Teste depois vendas = 1200 (Meta atingida!) e vendas = 650 (Abaixo da meta.). A condição vendas >= 1500 deve aparecer antes de vendas >= 1000; se inverter a ordem, valores como 1.800 serão capturados pelo primeiro teste e a classificação ficará incorreta.

Operadores usados nas condições

OperadorSignificadoExemplo
=Igual anota = 10
<>Diferente deestoque <> 0
>Maior quevendas > 1000
<Menor queestoque < 5
>=Maior ou igualvendas >= meta
<=Menor ou igualnota <= 5

Dentro da condição de um If, = faz uma comparação. Já em uma instrução como vendas = 1200, o mesmo símbolo faz uma atribuição de valor à variável. Esse detalhe é importante para entender o VBA.

Usando And, Or e Not

É possível combinar verificações: And exige duas condições verdadeiras; Or exige pelo menos uma; e Not inverte o valor lógico. Exemplo: uma venda recebe um benefício apenas se o cliente for VIP e a compra for de pelo menos R$ 200.

Sub ExemploAndOrNot()
    Dim clienteVIP As Boolean
    Dim valorCompra As Currency

    clienteVIP = True
    valorCompra = 250

    If clienteVIP And valorCompra >= 200 Then
        MsgBox "Desconto especial liberado."
    Else
        MsgBox "Condições do desconto não atendidas."
    End If
End Sub

Troque clienteVIP = True por False ou valorCompra = 250 por 150 para testar outros resultados. Atenção técnica: no VBA, And e Or não fazem avaliação de curto-circuito: os dois lados podem ser avaliados. Para evitar erros, especialmente quando uma expressão pode conter valor inválido, use verificações em blocos separados.

Projeto prático: classificar vendas automaticamente com VBA

Agora vamos aplicar o conteúdo em um problema de escritório. Você receberá uma lista de vendedores e suas vendas e criará uma macro que preenche a coluna Classificação com uma destas situações: Meta superada, Meta atingida, Abaixo da meta ou Revisar dado.

Passo 1 — Monte a tabela

Em uma planilha nova e vazia, digite exatamente estes dados nas células A1:B5. Deixe a coluna C vazia: a macro escreverá nela. Uma célula B5 vazia foi colocada de propósito para testar o tratamento de entradas inválidas.

Célula A (Vendedor)Célula B (Vendas em R$)Resultado esperado na coluna C
Ana1800Meta superada
Bruno1200Meta atingida
Carla650Abaixo da meta
Diegodeixe vazioRevisar dado

Passo 2 — Insira o código da macro

No mesmo módulo do Editor VBA, cole o procedimento abaixo. Ele lê a coluna B e escreve apenas na coluna C, entre as linhas 1 e 5, da planilha ativa. Nunca o execute em uma planilha com dados importantes nessa coluna, porque o conteúdo de C1:C5 será substituído.

Sub Aula5_ClassificarVendas()
    Dim aba As Worksheet
    Dim linha As Long
    Dim valor As Variant
    Dim classificacao As String

    Set aba = ActiveSheet
    aba.Range("C1").Value = "Classificação"

    For linha = 2 To 5
        valor = aba.Cells(linha, "B").Value

        If IsError(valor) Then
            classificacao = "Revisar dado"
        ElseIf Not IsNumeric(valor) Then
            classificacao = "Revisar dado"
        ElseIf CDbl(valor) < 0 Then
            classificacao = "Revisar dado"
        ElseIf CDbl(valor) >= 1500 Then
            classificacao = "Meta superada"
        ElseIf CDbl(valor) >= 1000 Then
            classificacao = "Meta atingida"
        Else
            classificacao = "Abaixo da meta"
        End If

        aba.Cells(linha, "C").Value = classificacao
    Next linha

    MsgBox "Classificação concluída!", vbInformation
End Sub

Passo 3 — Execute e compare os resultados

  1. Volte ao Excel e mantenha ativa a planilha com a tabela.
  2. No Editor VBA, posicione o cursor dentro de Aula5_ClassificarVendas e pressione F5; no Excel para Windows, use Alt + F8 e selecione essa macro.
  3. Confira se C2 mostra Meta superada, C3 Meta atingida, C4 Abaixo da meta e C5 Revisar dado.
  4. Experimente substituir o valor de B5 por 1600 e execute novamente. O resultado da linha Diego deverá mudar para Meta superada.
  5. Salve a pasta de trabalho como .xlsm para manter o projeto VBA.

Entenda as variáveis e as verificações do projeto

  • Dim aba As Worksheet e Set aba = ActiveSheet: criam uma referência para a planilha ativa. O código atua na planilha que estiver selecionada.
  • Dim linha As Long: guarda o número da linha que está sendo examinada.
  • Dim valor As Variant: permite receber números, células vazias e valores de erro do Excel.
  • If IsError(valor): reconhece um erro de célula antes de tentar operações numéricas.
  • ElseIf Not IsNumeric(valor): evita comparar texto não numérico com valores monetários.
  • CDbl(valor): converte um valor numérico para Double antes de comparar com os limites.
  • For linha = 2 To 5: repete a classificação para quatro vendedores. Vamos estudar esse tipo de repetição com profundidade na Aula 6.
  • aba.Cells(linha, "C").Value: escreve a classificação na célula correspondente da coluna C.

Limite do exemplo: esta macro foi construída para quatro linhas, não detecta automaticamente quantos vendedores existem e aceita textos que o Excel reconhece como números. É uma base de aprendizagem, não um sistema de produção pronto. Os resultados apresentados são os esperados pela leitura do código; a execução em instalações reais do Excel deve ser conferida no seu ambiente.

Erros comuns ao escrever condições If no VBA

Esquecer Then ou End If

Em uma condição de múltiplas linhas, é necessário usar Then na abertura e End If no fechamento. Se algum deles estiver ausente, o VBA pode exibir um erro de sintaxe ou de compilação.

Escrever Else If separado quando queria ElseIf

ElseIf (junto) é a palavra-chave para acrescentar outro teste ao mesmo bloco. Já Else seguido por um novo If inicia uma estrutura aninhada, que precisa de seu próprio encerramento. Para os exemplos desta aula, use ElseIf.

Colocar a condição mais geral primeiro

Se você escreve If vendas >= 1000 antes de ElseIf vendas >= 1500, o teste da faixa maior fica inacessível para valores acima de 1.500. Verifique sempre a ordem das condições.

Comparar números com textos ou células com erros

Antes de usar funções como CDbl em valores de células, valide se o conteúdo pode ser convertido para número. Se a célula contiver erros como #N/D, use IsError primeiro. Lembre-se de que And não impede a avaliação de uma segunda expressão potencialmente problemática.

Confundir If no VBA com a função SE do Excel

A função SE do Excel é escrita dentro de células, como =SE(B2>=1000;"Meta atingida";"Abaixo da meta") em uma instalação de Excel configurada para português do Brasil. Já o If do VBA fica dentro de procedimentos e pode decidir se uma macro deve escrever células, mostrar mensagens ou executar outras instruções.

Desafios para praticar If, ElseIf e Else

Desafio 1 — Acrescente a faixa Destaque

Modifique Aula5_ClassificarVendas para que vendas iguais ou superiores a R$ 2.000 apareçam como Destaque. Coloque essa nova condição antes da faixa Meta superada. Teste 2.500, 1.800 e 900. Resultados esperados: Destaque, Meta superada e Abaixo da meta.

Desafio 2 — Avalie uma nota escolar

Crie uma macro ClassificarNota com uma variável nota As Double. Use If e ElseIf para mostrar Aprovado quando a nota for pelo menos 7, Recuperação quando for pelo menos 5 e Reprovado abaixo disso. Antes de classificar, verifique se a nota está entre 0 e 10; caso contrário, mostre Nota inválida.

Uma possível solução do Desafio 2

Sub ClassificarNota()
    Dim nota As Double
    nota = 6

    If nota < 0 Or nota > 10 Then
        MsgBox "Nota inválida"
    ElseIf nota >= 7 Then
        MsgBox "Aprovado"
    ElseIf nota >= 5 Then
        MsgBox "Recuperação"
    Else
        MsgBox "Reprovado"
    End If
End Sub

Com nota = 6, a mensagem esperada é Recuperação. Experimente 8, 3 e 11 para conferir os demais caminhos. Esse exemplo usa uma variável atribuída diretamente; ele não recebe a nota de uma célula ou caixa de entrada.

Perguntas frequentes sobre If no VBA

É obrigatório usar Else no VBA?

Não. Você pode escrever apenas If ... Then ... End If quando quiser executar uma tarefa somente se uma condição for verdadeira.

Posso usar vários ElseIf na mesma estrutura?

Sim. O VBA aceita diversos ElseIf na mesma estrutura de decisão. Em uma longa lista de alternativas, também vale aprender Select Case, um recurso que estudaremos adiante.

Qual é a diferença entre If e Select Case?

If é flexível para comparar diferentes expressões e intervalos. Select Case organiza alternativas relativas a uma expressão, podendo deixar certas regras mais legíveis. Não é necessário conhecer Select Case para concluir esta aula.

Como descobrir qual condição está sendo executada?

No Editor VBA do Windows, pressione F8 com o cursor dentro da macro para executar linha por linha e acompanhar o fluxo. Use F9 em uma linha de código para marcar ou remover um ponto de interrupção.

É possível executar essas macros no Excel Online?

Não. O Excel para a Web não executa VBA; para estes exercícios, utilize uma versão de Excel para computador compatível com macros.

Conclusão da Aula 5 e próxima etapa

Você aprendeu a usar If para uma condição, Else para um caminho alternativo e ElseIf para classificar diferentes situações. O projeto de vendas mostrou como combinar condições, variáveis, verificação de dados e escrita em células para resolver um problema de trabalho.

Continue estudando: releia a Aula 4 — Variáveis no VBA ou volte ao índice completo do curso gratuito. Próxima aula: Aula 6 — Laços de repetição com For Next e Do While, para automatizar listas de tamanhos maiores.

0 Comentários

Deixe um comentário

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

Solicitar exportação de dados

Utilize este formulário para solicitar uma cópia dos seus dados neste site.

Solicitar remoção de dados

Utilize este formulário para solicitar a remoção dos seus dados neste site.

Solicitar retificação de dados

Utilize este formulário para solicitar a retificação dos seus dados neste site. Aqui você pode corrigir ou atualizar seus dados por exemplo.

Solicitar cancelamento de inscrição

Utilize este formulário para solicitar o cancelamento de inscrição do seu e-mail em nossas Listas de E-mail.