VBA – Múltiplas Instruções If (Aninhadas)

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Daniel Caramello

Last updated on May 19, 2023

Este tutorial mostrará como usar instruções If aninhadas no VBA.

As instruções If permitem que você teste uma única condição no VBA para ver se a condição é verdadeira ou falsa e, dependendo da resposta, o código se moverá na direção da declaração verdadeira ou da declaração falsa.

Uma Única Instrução IF

Sub TesteIf()
   Dim x as Integer
   x = 10
   If x = 10 then
'se x for 10, a condição será verdadeira
      MsgBox "x é 10"
   Else
'Se x não for 10, a condição será falsa
      Msgbox "x não é 10"
   End If
End Sub

Explicação Sobre IFs Aninhados

Um If aninhado permite que você coloque várias condições DENTRO de cada uma das instruções Verdadeiro e/ou Falso do If original.

Sub TesteIfAninhado()
Dim x as Integer
Dim y as Integer
Dim z as Integer
x = 10
y = 9
z = 8
If x = 10 Then
'Se x for 10, a condição é verdadeira, portanto, teste para y
   If y = 9 Then
       MsgBox "y é 9"
   Else
'Se y não for 9, a condição será falsa
       Msgbox "y não é 9"
   End If 
Else
'Se x não for 10, então a condição é falsa, então vamos testar z
   If z = 8 Then 
      MsgBox "z é 8" 
   Else 
'Se z não for 8, a condição será falsa
      Msgbox "z não é 8" 
   End If 
'Outro End If é necessário para fechar o if original
End If
End Sub

Indentar o código quando você o escreve é sempre uma boa prática, pois facilita a leitura e o acompanhamento do código quando você precisa voltar a ele em algum momento ou quando outro programador precisa lê-lo.

Também poderíamos criar uma função projetada pelo usuário (UDF) e chamar os valores de algumas células do Excel para a função usando parâmetros.

Function ObterIf(x as Integer, y as Integer, z as Integer) as String
   If x = 10 Then 
'Se x for 10, a condição é verdadeira, portanto, teste para y
      If y = 9 Then 
         ObterIf = "y é 9" 
      Else 
'Se y não for 9, a condição será falsa
         ObterIf = "y não é 9" 
      End If 
   Else 
'Se x não for 10, então a condição é falsa, então vamos testar z
      If z = 8 then 
           ObterIf="z é 8"
      Else 
'Se z não for 8, a condição será falsa
         ObterIf="z não é 8" 
      End If 
'Outro End If é necessário para fechar o if original
End If 
End Function

funcao obter if

Exemplo Prático de If Aninhado

Considere a seguinte função:

Function ObterDesconto(dblPrice As Double) As Double
   If dblPrice >= 1000 Then
'Se o preço for maior que 1.000, atribua um desconto
      If dblPrice >= 2000 Then
'se for maior que 2000, dê 10% de desconto
         ObterDesconto = dblPrice * 0.1
      Else
'caso contrário, dê 5% de desconto
         ObterDesconto = dblPrice * 0.05
      End If
'se o preço não for maior que 1000
   Else
'Se for maior que 500, dê 2,5% de desconto
      If dblPrice >= 500 Then
           ObterDesconto = dblPrice * 0.025
      Else
'caso contrário, não haverá desconto
         ObterDesconto = 0
      End If
'Outro End If é necessário para fechar o if original
End If
End Function

Usando essa função em uma planilha do Excel, podemos testar para ver o preço total de um pedido e aplicar descontos diferentes dependendo desse total.

funcao obter desconto

Uso de ElseIf

A função ElseIf nos permite simplificar o código, pois ela só passa para a segunda instrução if se a primeira retornar um valor falso.

Function ObterDesconto(dblPrice As Double) As Double
'usar else if para reduzir o código escrito
   If dblPrice >= 2000 Then
      ObterDesconto = dblPrice * 0.1
   ElseIf dblPrice >= 1000 Then
      ObterDesconto  = dblPrice * 0.075
   ElseIf dblPrice >= 500 Then
      ObterDesconto = dblPrice * 0.05
   ElseIf dblPrice >= 200 Then
      ObterDesconto = dblPrice * 0.025
   ElseIf dblPrice >= 100 Then
      ObterDesconto = dblPrice * 0.01
   Else
      ObterDesconto = 0
End If
End Function

desconto elseif compacto

Uso de uma Instrução Case

Também podemos usar uma instrução Case para obter o mesmo efeito.

Function ObterDesconto(dblPrice As Double) As Double
   Select Case dblPrice
'Essa instrução Case tem 6 níveis de desconto diferentes
   Case Is >= 2000
      ObterDesconto = dblPrice * 0.1
   Case Is >= 1000
      ObterDesconto = dblPrice * 0.075
   Case Is >= 500
      ObterDesconto = dblPrice * 0.05
   Case Is >= 200
      ObterDesconto = dblPrice * 0.025
   Case Is >= 100
      ObterDesconto = dblPrice * 0.01
   Case Else
      ObterDesconto = 0
   End Select
End Function

desconto select case

vba-free-addin

Exemplos de Add-ins de Códigos VBA

Acesse facilmente todos os exemplos de código que se encontram em nosso site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(Nenhuma instalação necessária!)

Baixe de Graça

Retornar aos Exemplos de Códigos VBA