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