Tag Archives: Then

Excel VBA – Else If

O que é?

No VBA, a estrutra If … Then … Else pode ser estendida com o uso da Estrutura ElseIf. Ela permite que você construa um nível de teste lógico em vários níveis, permitindo estender seu teste além de uma única condição.

Esta estrutura de controle de fluxo tem a seguinte sintaxe:

1
2
3
4
5
6
7
If [condição 1] Then
     [código executado caso a condição 1 seja verdadeira]
ElseIf [condição 2] Then
      [código executado caso a condição 2 seja verdadeira e a condição 1 seja falsa]
Else
      [código executado caso nenhuma das condições anteriores seja verdadeira]
End If

Da mesma forma que no uso simples do If, a palavra-chave Else é opcional e permite que um conjunto alternativo de instruções seja executado caso a condição testada não seja satisfeita. End If encerra o bloco de código. A quantidade de instruções ElseIf … Then que podemos ter dentro de uma estrutura é em teoria ilimitada, sendo possível analisar quantas condições quisermos de forma desacoplada. Cada teste pode ser tratado de forma independente, não tendo vínculo direto um com o outro.

Exemplo

Neste exemplo, faremos uma implementação de uma função que faz uma comparação de dois números. Ela deve receber como parâmetro dois números reais x e y e devolver um dos seguintes valores no formato texto:

  • MAIOR , se x é maior que y;
  • MENOR se x e menor que y;
  • IGUAIS se x e y forem iguais;

Para implementar esta função, usaremos a estrutura If … Then em conjunto com a estrutura Else If … Then. Observe o código:

 Function Compara(x As Long, y As Long) As String
    'variável para armazenar o resultado
    Dim resultado As String
 
    If x > y Then
        resultado = "MAIOR"
     ElseIf x < y Then
        resultado = "MENOR"
    ElseIf x = y Then
        resultado = "IGUAIS"
    End If
 
    'retorna o resultado da função
    Compara = resultado
End Function

Para facilitar o entendimento, tome o valor de x como sendo a referência para o funcionamento da função. O primeiro teste feito no código é para analisar se é maior do que y. Se a condição não atendida, o código passa para o segundo este, que é verificar se x é menor que y. Se o segundo teste também não for atendido, o código passa para a terceira condição que é a verificação de igualdade dos números.

Quando uma das condições for atendida, o código será redirecionada para a instrução End If.

Observe a aplicação da função Compara:

ajkbsmpbw67f_14k4d4fbf7ajkbsmpbw67f_15gc5n39fd