VBA IIF

Excel VBA IIF

Se você é um usuário regular de macros VBA, deve ter encontrado a função chamada “IIF” ou pode ter visto esta função na Internet. À primeira vista, você deve ter pensado que é uma condição IF como nossa instrução IF regular no Excel. Mas esta não é a mesma instrução IF que usamos para avaliar testes lógicos e chegar aos resultados com base nos critérios que fornecemos. Neste artigo, mostraremos a condição “VBA IIF” no VBA.

O que o IIF Condition faz no VBA?

Isso é muito semelhante à nossa condição IF, mas ligeiramente diferente na natureza. A condição “VBA IIF” testa a expressão fornecida ou teste lógico e retorna VERDADEIRO ou FALSO como resultado.

Sintaxe VBA IIF

Observe a sintaxe da função IIF.

  • Expressão: Isso nada mais é do que o teste lógico que gostaríamos de realizar.
  • Parte Ture: Se o teste lógico é VERDADEIRO, então qual deve ser o resultado da parte VERDADEIRA.
  • Parte falsa: Se o teste lógico for FALSO, qual deve ser o resultado da parte FALSA.

Podemos inserir nossos próprios resultados com peças TRUE & FALSE. Embora os argumentos pareçam semelhantes aos da condição IF, isso será um pouco diferente. Veremos isso nos exemplos da função Excel VBA IIF.

Uma das principais diferenças entre “IF” regular e este “IIF” é que podemos reduzir o código a uma única linha com IIF, onde com a condição IF leva um mínimo de 5 linhas para chegar ao mesmo resultado.

Exemplo de função VBA IIF

Abaixo estão os exemplos da função VBA IIF no Excel.

Você pode baixar este modelo VBA IIF Excel aqui - modelo VBA IIF Excel

Exemplo # 1 - VBA IIF

Ok, veremos um exemplo simples de função IIF. Agora vamos testar se um número é maior ou menor que outro número. Siga as etapas abaixo para escrever o código VBA.

Etapa 1: inicie a macro.

Etapa 2: Defina a variável como String em VBA.

Código:

 Sub IIF_Example () Dim FinalResult As String End Sub 

Etapa 3: Defina mais duas variáveis ​​como Longas em VBA.

Código:

 Sub IIF_Example () Dim FinalResult As String Dim Number1 As Long Dim Number2 As Long End Sub 

Passo 4: Agora para a variável “Número1” atribua o valor 105 e para a variável “Número2” atribua o valor 100.

Código:

 Sub IIF_Example () Dim FinalResult As String Dim Number1 As Long Dim Number2 As Long Number1 = 105 Number2 = 100 End Sub 

Passo 5: Agora para a primeira variável definida “FinalResult” iremos atribuir o resultado da função IIF. Portanto, abra o IIF para a variável.

Etapa 6: forneça a expressão como Número1> Número2.

Passo 7: Agora, se a expressão for TRUE qual deve ser o resultado. Atribuirei o resultado como “Número 1 é maior que Número 2”.

Passo 8: Agora se a expressão for FALSE qual deve ser o resultado. Atribuirei o resultado como “Número 1 é menor que Número 2”.

Agora, o valor da variável será um dos abaixo.

Se verdadeiro: “Número 1 é maior que Número 2”

Se for falso: “Número 1 é menor que Número 2”

Etapa 9: Vamos mostrar o resultado em uma caixa de mensagem em VBA.

Código:

 Sub IIF_Example () Dim FinalResult As String Dim Number1 As Long Dim Number2 As Long Number1 = 105 Number2 = 100 FinalResult = IIf (Number1> Number2, "Number 1 is Greater than Number 2", "Number 1 is less than Number 2") MsgBox FinalResult End Sub 

Agora vamos executar o código e ver o resultado.

Como o valor do Número 1 é 105, que é maior do que o valor do Número 2 de 100, obtemos o resultado como “Número 1 é maior que o Número 2”. Como a Expressão é TRUE, a condição IIF retornou esse resultado.

Exemplo # 2 - IF vs IIF

Você deve estar se perguntando qual é a diferença entre IF e IIF. Sim, há uma diferença na codificação. Por exemplo, observe o código de condição IF.

Código:

 Sub IIF_Example () Dim FinalResult As String Dim Number1 As Long Dim Number2 As Long Number1 = 105 Number2 = 100 If Number1> Number2 Then MsgBox "O número 1 é maior que o número 2" Else MsgBox "O número 1 é menor que o número 2" End If End Sub 

Usando IF primeiro, aplicamos um teste lógico.

 Se Número1> Número2 Então 

Então, se o teste lógico for verdadeiro, aplicamos o resultado.

MsgBox "Número 1 é maior que o número 2"

Então, se o teste lógico for falso, aplicamos os diferentes resultados.

MsgBox "Número 1 é menor que Número 2"

Ambas as funções retornam o mesmo resultado, mas com IIF podemos codificar em uma única linha apenas, onde a instrução IF requer várias linhas.

Exemplo # 3 - Condição IIF aninhada VBA

Like how we use nested IF to test multiple conditions similarly we can use multiple IIF as well. Take a look at the below code.

Code:

 Sub IIF_Example2() Dim FinalResult As String Dim Marks As Long Marks = 98 FinalResult = IIf(Marks > 90, "Dist", IIf(Marks > 80, "First", IIf(Marks > 70, "Second", IIf(Marks > 60, "Third", "Fail")))) MsgBox FinalResult End Sub 

The above IIF condition tests five logical tests and returns the result accordingly.