Função VBA IIF do Excel
O VBA IIF (também conhecido como Immediate If) é uma declaração que você pode ter visto frequentemente ao codificar no VBA e criar macros. É semelhante à função SE do Excel, onde você anota uma condição lógica e fornece duas saídas, se a condição for verdadeira e se for falsa. Se olhando para ele, você o considera uma função semelhante ao VBA IF, que usamos para avaliar testes e condições lógicos, você está enganado. Parece estar perto do VBA Se, e idealmente, pode-se dizer que eles realmente têm uma pequena diferença entre eles durante a execução. Neste artigo, obteremos mais informações sobre a instrução VBA IIF e como usá-la em nossa vida cotidiana de codificação para facilitar nossas tarefas.
A instrução VBA IIF funciona de maneira semelhante à instrução IF do Excel. Ele verifica a condição ou instrução lógica fornecida e fornece a saída associada à condição TRUE ou quando a condição é FALSE.
Sintaxe de IIF no Excel VBA
A sintaxe da função VBA IIF no Excel é a seguinte:
Onde,
- Expressão: é a condição lógica que queremos avaliar sob a função IIF
- TruePart: é o valor / saída que esperamos, quando a condição / expressão lógica é VERDADEIRA.
- FalsePart: é o valor / saída que esperamos, quando a condição / expressão lógica é FALSE.
Como usar o Excel VBA IIF?
Agora vamos tentar com alguns exemplos no VBA IIF no Excel.
Você pode fazer o download deste modelo do VBA IIF Excel aqui - Modelo do VBA IIF ExcelVamos dar um exemplo simples para ver como o IIF funciona no Microsoft VBA.
Exemplo # 1 - VBA IIF
Etapa 1: Abra um Editor do Visual Basic (VBE). Vá para a guia Inserir e clique em Módulo . Ele adicionará um novo módulo no VBE.
Etapa 2: defina um novo subprocedimento que possa conter sua macro neste módulo.
Código:
Sub IIf_Ex1 () End Sub
Etapa 3: defina duas novas variáveis Var_1 como Long e Result com o tipo de dados como uma variante.
Código:
Sub IIf_Ex1 () Dim var_1 Como resultado Dim longo como Boolean End Sub
Etapa 4: atribua um valor numérico a Var_1 para que possamos usar essa variável para verificar a condição IIF lógica.
Código:
Sub IIf_Ex1 () Dim var_1 As Long Dim Dim Result As Boolean var_1 = 5 End Sub
Etapa 5: use a variável Result para armazenar a condição lógica IIF sob a qual vamos verificar se o valor atribuído a Var_1 é maior ou igual a 10.
Código:
Sub IIf_Ex1 () Dim var_1 Como resultado de Dim como booleano var_1 = 5 Resultado = IIf (var_1> = 10, Verdadeiro, Falso) End Sub
Etapa 6: Agora, use Debug.Print para imprimir o resultado da condição IIF no painel do visualizador de resultados imediatos.
Código:
Sub IIf_Ex1 () Dim var_1 Como resultado de Dim como booleano var_1 = 5 Resultado = IIf (var_1> = 10, True, False) Depuração.
Etapa 7: execute esse código pressionando F5 ou o botão Executar na parte superior do painel e veja a saída em Painel de saída imediata.
Exemplo # 2 - VBA IIF
Suponha que tenhamos dados na planilha da seguinte maneira:
Tudo o que queremos é uma saída na coluna B, de modo que, o número seja par ou ímpar.
Etapa 1: defina um novo subprocedimento no VBE.
Código:
Sub IIF_Ex2 () End Sub
Etapa 2: defina duas variáveis "a" e "Números" como Long.
Código:
Sub IIF_Ex2 () Dim a As Long Dim Number As Long End Sub
Etapa 3: Inicie um loop For, no qual queremos fazer loop de todos os valores presentes na célula A2: A11. O loop começará de 2 a 11 (porque temos cabeçalhos na linha 1 para as colunas A e B).
Código:
Sub IIF_Ex2 () Dim a As Long Dim Number As Long For a = 2 a 11 End Sub
Etapa 4: use a Variável numérica definida anteriormente para armazenar todos os números da coluna A que variam no intervalo especificado usando o operador de atribuição (A2: A11). Use a seguinte linha de código para fazer isso.
Número = Folha1.Faixa ("A" e a)
Código:
Sub IIF_Ex2 () Dim a As Long Dim Number As Long For a = 2 to 11 Number = Sheet1.Range ("A" & a) End Sub
Essa linha de código permite que o VBA percorra todas as linhas da coluna A da “Plan1” no Excel, uma a uma no loop For.
Etapa 5: use IIF para verificar se cada valor da célula é par ou ímpar e armazene os resultados em cada célula da coluna B. A linha de código a seguir fará a tarefa por você.
Folha1.Faixa ("B" e a) .Valor = IIf (Número Mod 2 = 0, "Par", "Ímpar")
Código:
Sub IIF_Ex2 () Dim a As Long Dim Number As Long For a = 2 To 11 Number = Sheet1.Range ("A" & a) Sheet1.Range ("B" & a) .Value = IIf (Number Mod 2 = 0, "Par", "Ímpar") End Sub
Aqui, nesta linha, queremos que os resultados sejam armazenados em cada célula da coluna B da Plan1. Portanto, usamos "Sheet1.Range (" B "& i) .Value") no lado esquerdo do trecho de código. Usamos o IIF para verificar se o número é divisível por 2 usando Mod (operador Modulo sob VBA). Finalmente, queremos saber se o número é Par ou Ímpar na coluna B. Portanto, esses dois valores são mencionados na instrução IIF.
Etapa 6: Feche a instrução For loop with Next para que, após cada iteração, o sistema se mova para a próxima célula da planilha, até atingir a 11ª linha.
Código:
Sub IIF_Ex2 () Dim a As Long Dim Number As Long For a = 2 To 11 Number = Sheet1.Range ("A" & a) Sheet1.Range ("B" & a) .Value = IIf (Number Mod 2 = 0, "Par", "Ímpar") Próximo Fim Sub
Etapa 7: é isso. Execute esse código pressionando F5 ou o botão Executar, localizado no painel superior do VBE. Depois de executar essa macro, você verá uma saída abaixo na planilha1 (denominada "Exemplo_1") da pasta de trabalho do Excel.
Exemplo # 3 - VBA IIF
Veremos uma declaração IIF aninhada agora:
É da mesma maneira que aninhamos várias condições de IF em um único loop.
Suponha os mesmos dados que usamos no caso anterior. Tudo o que queríamos é escrever um código que nos permita distinguir entre números da seguinte maneira:
- Se o número estiver entre 1 e 3 (3 inclusos), ele deverá mencionar “Pequeno” na coluna B.
- Se o número estiver entre 4 e 6 (6 incluído), ele deverá mencionar "Médio" na coluna B.
- Se o número estiver entre 7 e 10 (10 incluído), ele deverá mencionar "Grande" na coluna B.
Vamos escrever um código para este tipo de IIF:
Etapa 1: defina um novo subprocedimento no seu VBE que possa conter sua macro.
Código:
Sub NestedIf () End Sub
Siga as etapas 2 a 4, da mesma forma que no exemplo acima (exemplo 2 deste artigo). Inclui a definição de variáveis e a adição de todos os números presentes na coluna A em um loop For.
Etapa 5: use o seguinte trecho de código para obter a saída desejada.
Código:
Sub NestedIf () Número não ofuscante do tamanho a = 2 a 11 Número = Planilha2.Range ("A" e a) Planilha2.Range ("B" e a) .Valor = IIf (Número = 7, "Grande", " Médio ")) End Sub
Etapa 6: Feche o loop For com a instrução Next e execute esse código usando o botão F5 ou Run, presente na faixa de opções superior em VBE. Depois de executar o código, você verá a saída como abaixo:
Aqui, neste código, o IIF aninhado está sendo usado. Sob a primeira IIF, recebemos o que deve ser impresso na coluna B quando os números estão entre 1 e 3. Na segunda IIF, mencionamos o que deve ser impresso na coluna B quando os números são maiores ou iguais a 7 e sob a mesmo IIF, fornecemos o que deve ser impresso na coluna B quando os números não estiverem entre 1 e 3 e 7 e 10.
Dessa forma, podemos adicionar vários IIFs sob o mesmo código e aninhá-los. É isso neste artigo. Vamos encerrar a coisa com algumas coisas a serem lembradas.
Coisas para lembrar
- O IIF sempre avalia as duas partes (VERDADEIRA e FALSA) para uma condição específica. No entanto, apenas imprime a parte FALSE quando nada é VERDADEIRO.
- A escrita é abreviada que a das declarações If-Else padrão.
- Não é bem conhecido, portanto, alguns usuários podem não entender seu código se você tiver usado o IIF em vez do If-Else convencional.
Artigos recomendados
Este é um guia para o VBA IIF. Aqui discutimos como usar o Excel VBA IIF, juntamente com exemplos práticos e modelo de excel para download. Você também pode consultar nossos outros artigos sugeridos -
- Trabalhando com o VBA Active Cell
- Excluindo uma linha no VBA
- Como usar o Excel VBA Transpose?
- Como corrigir o erro 1004 usando o VBA