Tag Archives: Else

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

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:

Screenshot 2016-01-24 17.30.49

Screenshot 2016-01-24 17.31.11

A função se comporta exatamente como a função ABS do Excel.