Sorry, this entry is only available in Português.
Tag Archives: If
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:
Excel VBA – If … Then … Else
O que é?
No VBA, a estrutura If … Then … Else permite que determinadas instruções sejam executadas apenas caso uma condição definida pelo programador seja satisfeita. O bloco If deve ser encerrado com uma instrução End If.
Esta estrutura de controle de fluxo tem a seguinte sintaxe:
If [condição] Then [código executado caso a condição seja verdadeira] Else [código executado caso a condição seja falsa] End 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.
Note que é possível inserir qualquer número desejado de instruções dentro desta estrutura. As instruções executadas caso a condição seja verdadeira são todas aquelas que estiverem antes do Else (ou do End If, caso o Else seja suprimido). Analogamente, se uma instrução Else for fornecida, todo o código entre ela e o End If será executado.
Exemplo
Neste exemplo, faremos uma implementação da função módulo. Ela deve receber como parâmetro um número real x e devolver um dos seguintes valores:
- x, se x é positivo;
- -x, se x é negativo (note que isto corresponde ao valor de x sem o sinal).
Para implementar esta função, usaremos a estrutura If … Then. Observe o código:
Function Absoluto(x As Long) As Long If x >= 0 Then Absoluto = x Else Absoluto = -x End If End Function |
No código acima, a condição testada pelo If é se o valor de x é positivo (x > 0). Caso esta expressão seja verdadeira, o primeiro bloco de código (Absoluto = x) será executado, e o segundo, ignorado; caso contrário, apenas o segundo bloco (Absoluto = -x) será executado.
Observe a aplicação da função Absoluto:
A função se comporta exatamente como a função ABS do Excel.