Retorna uma das duas partes, dependendo da avaliação de um expressão.
Você pode usar IIf em qualquer lugar que possa usar expressões. Você usa iIf para determinar se outra expressão é verdadeira ou falsa. Se a expressão for verdadeira, iIf retornará um valor; se for falso, iIf retornará outro. Especifique os valores que IIf retorna.
Sintaxe
IIf ( expr , truepart , falsepart )
A sintaxe da função IIf tem os seguintes argumentos:
Argumento |
Descrição |
expr |
Obrigatório. Expressão que você deseja avaliar. |
truepart |
Obrigatório. Valor ou expressão retornado se expr for True. |
falsepart |
Obrigatório. Valor ou expressão retornado se expr for False. |
Comentários
IIf sempre avalia truepart e falsepart, mesmo que ele retorne apenas um deles. Por causa disso, você deve watch para efeitos colaterais indesejáveis. Por exemplo, se avaliar falsepart resultar em uma divisão por erro zero, ocorrerá um erro mesmo que expr seja True.
Exemplos
Usar iIf em um formulário ou relatório Suponha que você tenha uma tabela Clientes que contenha um campo chamado CountryRegion. Em um formulário, você deseja denotar se italiano é a primeira língua do contato. Você pode adicionar um controle e usar iIf em sua propriedade Control Source , assim:
=IIf([CountryRegion]="Italy", "Italian", "Some other language")
Quando você abre o formulário no modo de exibição Formulário, o controle exibe "italiano" sempre que o valor de CountryRegion é Itália e "Alguma outra língua" sempre que CountryRegion é qualquer outro valor.
Usar IIf em expressões complexas Você pode usar qualquer expressão como qualquer parte de uma instrução IIf . Você também pode "aninhar" expressões IIf , permitindo que você avalie uma série de expressões dependentes. Para continuar com o exemplo anterior, talvez você queira testar vários valores de CountryRegion diferentes e, em seguida, exibir a linguagem apropriada, dependendo de qual valor existe:
=IIf([CountryRegion]="Italy", "Italian", IIf([CountryRegion]="France", "French", IIf([CountryRegion]="Alemanha", "German", "Some other language")))
O texto "Alguma outra linguagem" é o argumento falsepart da função IIf mais interna. Como cada função IIf aninhada é o argumento falsepart da função IIf que a contém, o texto "Alguma outra linguagem" só será retornado se todos os argumentos expr de todas as funções IIf forem avaliados como False.
Para 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, chamado Data de Vencimento, que contém a data em que um determinado livro deve voltar. Você pode criar um formulário que indica o status de um item de check-out em um controle usando a função IIf na propriedade Control Source desse controle, assim:
=IIf([Data de vencimento]<Date(),"OVERDUE", IIf([Data de vencimento]=Date(),"Due today","Not yet Due"))
Quando você abre o formulário no modo de exibição Formulário, o controle exibe "OVERDUE" se o valor da Data de Vencimento for menor que a data atual, "Due today" se for igual à data atual e "Ainda não devido" caso contrário.
Observação: Para usar operadores lógicos como "And" ou "Or" no argumento expr da função IIf, você deve incluir a expressão lógica na função Eval. Confira a tabela de exemplo a seguir.
Usar 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, você deve prefigurar a expressão com um alias de campo e um cólon (:) em vez de um sinal igual (=). Para usar o exemplo anterior, você digitaria o seguinte na linha Campo da grade de design de consulta:
Idioma: IIf([CountryRegion]="Italy", "Italian", "Some other language")
Nesse caso, "Language:" é o alias de campo.
Para obter mais informações sobre como criar consultas e campos calculados, consulte o artigo Criar uma consulta de seleção simples.
Usar iIf no código VBA
Observação: Exemplos a seguir demonstram o uso dessa função em um módulo VBA (Visual Basic for Applications). Para obter mais informações sobre como trabalhar com o VBA, selecione Referência do Desenvolvedor na lista suspensa ao lado de Pesquisa e insira 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 a quantidade for maior que 1000; caso contrário, ele retorna a palavra "Pequeno".
Function CheckIt (TestMe As Integer)
CheckIt = IIf(TestMe > 1000, "Large", "Small") End Function
Mais exemplos
Expressão |
Resultados |
=IIf([AirportCode]="ORD","Chicago", IIf([AirportCode]="ATL","Atlanta", IIf([AirportCode]="SEA","Seattle","Other"))) |
Se [AirportCode] for "ORD", retorne "Chicago". Caso contrário, se [AirportCode] for "ATL", retorne "Atlanta". Caso contrário, se [AirportCode] for "SEA", retorne "Seattle". Caso contrário, retorne "Outros". |
=IIf([ShipDate]<Date(),"Shipped",IIf([ShipDate]=Date(),"Shipping today","Unshipped")) |
Se [ShipDate] for anterior à data de hoje, retorne "Shipped". Caso contrário, se [ShipDate] for igual à data de hoje, retorne "Envio hoje". Caso contrário, retorne "Unshipped". |
=IIf([PurchaseDate]<#1/1/2008#"Old","New") |
Se [PurchaseDate] for anterior a 1/1/2008, retorne "Old". Caso contrário, retorne "Novo". |
=IIf(Eval([Volts] Entre 12 e 15 e [Amps] Entre 0,25 e 0,3),"OK", "Fora da calibragem") |
Se [Volts] estiver entre 12 e 15 e [Amps] estiver entre 0,25 e 0,3, retorne "OK". Caso contrário, retorne "Fora de calibragem". |
=IIf(Eval([CountryRegion] In ("Canada","USA","Mexico"))"América do Norte","Other") |
Se [CountryRegion] for "Canadá", "EUA" ou "México", retornará "América do Norte". Caso contrário, retorne "Outros". |
=IIf([Average]>=90,"A",IIf([Average]>=80,"B",IIf([Average]>=70,"C",IIf([Average]>=60,"D","F")))) |
Se [Média] for 90 ou maior, retorne "A". Caso contrário, se [Média] for 80 ou maior, retornará "B". Caso contrário, se [Média] for 70 ou maior, retornará "C". Caso contrário, se [Média] for 60 ou maior, retorne "D". Caso contrário, retorne "F". |
Observação: Se você estiver usando a função IIf para criar um campo calculado em uma consulta, substitua o sinal igual (=) por um alias de campo e um cólon (:). Por exemplo, Status: IIf([ShipDate]<Date(),"Shipped", IIf([ShipDate]=Date(),"Shipping today","Unshipped"))