Função IIf

Retorna uma de duas partes, dependendo da avaliação de uma expressão (expressão: qualquer combinação de operadores matemáticos ou lógicos, constantes, funções e nomes de campos, controles e propriedades avaliadas como um único valor. As expressões podem executar cálculos, manipular caracteres ou testar dados.).

Você pode usar IIf em qualquer lugar em que pode usar expressões. Você usa IIf para determinar se outra expressão é verdadeira ou falsa. Se a expressão for verdadeira, IIf retorna um valor; se for falsa, IIf retorna outro. Você especifica os valores que IIf retorna.

Veja alguns exemplos

Sintaxe

IIf(expr, parteverdadeira, partefalsa)

A função IIf possui os seguintes argumentos (argumento: um valor que fornece informações a uma ação, um evento, um método, uma função ou um procedimento.):

Argumento Descrição
expr Obrigatório. Expressão que você quer avaliar.
parteverdadeira Obrigatório. O valor ou a expressão retornada se expr for True.
partefalsa Obrigatório. O valor ou a expressão retornada se expr for False.

Comentários

IIf sempre avalia parteverdadeira e partefalsa, mesmo que retorne apenas uma delas. Por isso, você deve prestar verificar se há efeitos colaterais indesejáveis. Por exemplo, se a avaliação de partefalsa resultar em um erro de divisão por zero, um erro ocorrerá mesmo que expr seja True.

Exemplos

Use IIf em um formulário ou relatório    Suponha que você tenha uma tabela Clientes que contenha um campo chamado PaísRegião. Em um formulário, você quer indicar se a língua materna do contato é italiano. Você pode adicionar um controle e usar IIf em sua propriedade Fonte do Controle, da seguinte forma:

=IIf([PaísRegião]="Itália", "Italiano", "Outro idioma")

Quando você abrir o formulário no Modo de exibição de formulário, o controle exibirá "Italiano" sempre que o valor de PaísRegião for Itália, e "Outro idioma" sempre que PaísRegião for qualquer outro valor.

Use IIf em expressões complexas    Você pode usar qualquer expressão como qualquer parte de uma instrução IIf. Também é possível "aninhar" expressões IIf, o que permite avaliar uma série de expressões dependentes. Para continuar com o exemplo anterior, convém testar vários valores PaísRegião diferentes e, em seguida, exibir o idioma apropriado, dependendo do valor que existir:

=IIf([PaísRegião]="Itália", "Italiano", IIf([PaísRegião]="França", "Francês", IIf([PaísRegião]="Alemanha", "Alemão", "Outro idioma")))

O texto "Outro idioma" é o argumento partefalsa da função IIf interna. Como cada função IIf aninhada é o argumento partefalsa da função IIf que a contém, o texto "Outro idioma" só será retornado se todos os argumentos expr de todas as funções IIf forem avaliados como Falso.

Para analisar outro exemplo, suponha que você trabalhe em uma biblioteca. O banco de dados da biblioteca tem uma tabela chamada Check-outs que contém um campo Data de Conclusão, com a data em que um livro específico deve ser devolvido. Você pode criar um formulário que indique o status de um item submetido a check-out em um controle usando a função IIf na propriedade Fonte do Controle do controle, da seguinte forma:

=IIf([Data de Conclusão]<Date(),"VENCIDO",IIf([Data de Conclusão]=Date(),"Conclusão prevista para hoje","Ainda não vencido"))

Quando você abrir o formulário no Modo de exibição de formulário, o controle exibirá "VENCIDO" se o valor da Data de Conclusão for menor do que a data atual, "Conclusão prevista para hoje" se o valor for igual à data atual e "Ainda não vencido", caso contrário.

 Observação   Para usar operadores lógicos como "E" ou "Ou" no argumento expr da função IIf, você deve colocar a expressão lógica dentro da função Eval. Veja o exemplo da tabela a seguir.

Use IIf em uma consulta    

A função IIf é frequentemente usada para criar campos calculados em consultas. A sintaxe é a mesma, com a exceção de que, em uma consulta, a expressão deve ser precedida de um campo alias (alias (SQL): um nome alternativo para uma tabela ou campo em expressões. O alias é usado com frequência para reduzir o nome da tabela ou do campo nas referências posteriores no código, para evitar possíveis referências ambíguas ou para fornecer um nome mais descritivo na saída da consulta.) e dois-pontos (:) em vez de um sinal de igual (=). Para usar o exemplo anterior, você deve digitar o seguinte na linha Campo da planilha de design da consulta:

Idioma: IIf([PaísRegião]="Itália", "Italiano", "Outro idioma")

Nesse caso, "Idioma:" é o alias do campo.

Para obter mais informações sobre a criação de consultas e campos calculados, consulte o artigo Selecionar dados usando uma consulta.

Use IIf em um código VBA    

 Observação   Os exemplos a seguir demonstram o uso dessa função em um módulo do Visual Basic for Applications (VBA). Para obter mais informações sobre como trabalhar com VBA, selecione Referência sobre o Desenvolvedor na lista suspensa ao lado de Pesquisa e digite um ou mais termos na caixa de pesquisa.

Este exemplo usa a função IIf para avaliar o parâmetro TestMe do procedimento CheckIt e retorna a palavra "Grande" se o valor for maior que 1000, caso contrário, retorna a palavra "Pequeno".

FunçãoCheckIt (TestMe As Integer)
    CheckIt = IIf(TestMe > 1000, "Grande", "Pequeno")
Função End

      

Mais exemplos

Expressão Resultados
=IIf([CódigoAeroporto]="ORD","Chicago",IIf([CódigoAeroporto]="ATL","Atlanta",IIf([CódigoAeroporto]="SEA","Seattle","Outro"))) Se [CódigoAeroporto] for "ORD", retornar "Chicago". Caso contrário, se [CódigoAeroporto] for "ATL", retornar "Atlanta". Caso contrário, se [CódigoAeroporto] for "SEA", retornar "Seattle". Caso contrário, retornar "Outro".
=IIf([DatadeRemessa]<Date(),"Remetido",IIf([DatadeRemessa]=Date(),"Remessa hoje","Não remetido")) Se [DatadeRemessa] for anterior à data de hoje, retornar "Remetido". Caso contrário, se [DatadeRemessa] for igual à data de hoje, retornar "Remessa hoje". Caso contrário, retornar "Não remetido".
=IIf([DatadeCompra]<#1/1/2008#,"Antiga","Nova") Se [DatadeCompra] for anterior a 1/1/2008, retornar "Antigo". Caso contrário, retornar "Nova".
=IIf(Eval([Volts] entre 12 e 15 e [Amps] entre 0,25 e 0,3),"OK","Descalibrado") Se [Volts] estiver entre 12 e 15 e [Amps] estiver entre 0,25 e 0,3, retornar "OK". Caso contrário, retornar "Descalibrado".
=IIf(Eval([PaísRegião] In ("Canadá","EUA","México")),"América do Norte","Outro") Se [PaísRegião] for "Canadá", "EUA" ou "México", retornar "América do Norte". Caso contrário, retornar "Outro".
=IIf([Média]>=90,"A",IIf([Média]>=80,"B",IIf([Média]>=70,"C",IIf([Média]>=60,"D","F")))) Se [Média] for 90 ou superior, retornar "A". Caso contrário, se [Média] for 80 ou superior, retornar "B". Caso contrário, se [Média] for 70 ou superior, retornar "C". Caso contrário, se [Média] for 60 ou superior, retornar "D". Caso contrário, retornar "F".

 Observação   Se você estiver usando a função IIf para criar um campo calculado em uma consulta, substitua o sinal de igual (=) por um alias (alias (SQL): um nome alternativo para uma tabela ou campo em expressões. O alias é usado com frequência para reduzir o nome da tabela ou do campo nas referências posteriores no código, para evitar possíveis referências ambíguas ou para fornecer um nome mais descritivo na saída da consulta.) de campo e dois-pontos (:). Por exemplo, Status: IIf([DatadeRemessa]<Date(),"Remetido",IIf([DatadeRemessa]=Date(),"Remessa hoje","Não remetido"))

 
 
Aplica-se a:
Access 2013, Access 2010, Access 2007