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 ExcelExemplo # 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.