Devolve uma de duas partes, dependendo da avaliação de uma expressão.
Pode utilizar IIf expressões em qualquer lugar. Utilize IIf para determinar se outra expressão é verdadeira ou falsa. Se a expressão for verdadeira, IIf devolve um valor. Se for falso, IIf devolve outro valor. Você especifica os valores que IIf retornam.
Sintaxe
IIf(expr, truepart, falsepart)
A IIf sintaxe da função tem os seguintes argumentos:
| Argumento | Descrição |
|---|---|
expr |
Obrigatório. Expressão que pretende avaliar. |
truepart |
Obrigatório. Valor ou expressão devolvida se expr for True. |
falsepart |
Obrigatório. Valor ou expressão devolvida se expr for False. |
Comentários
IIf sempre avalia ambos truepart e falsepart, mesmo que devolva apenas um deles. Devido a esse comportamento, preste atenção aos efeitos colaterais indesejados. Por exemplo, se avaliar falsepart resulta num erro de divisão por zero, ocorre um erro mesmo que expr seja True.
Exemplos
Utilizar IIf num formulário ou relatório
Suponhamos que tem uma Customers tabela que contém um campo com o nome CountryRegion. Num formulário, quer mostrar se a língua materna do contacto é o italiano. Pode adicionar um controlo e utilizá-lo IIf na respetiva Control Source propriedade:
=IIf([CountryRegion]="Italy", "Italian", "Some other language")
Quando abre o formulário na Vista Formulário, o controlo é apresentado Italian sempre que o valor for CountryRegion .Italy É apresentado Some other language sempre que CountryRegion tiver qualquer outro valor.
Utilização IIf em expressões complexas
Pode utilizar qualquer expressão em qualquer parte de uma IIf declaração. Também pode aninhar IIf expressões, o que lhe permite avaliar uma série de expressões dependentes. Para continuar com o exemplo anterior, recomendamos que teste vários valores diferentes CountryRegion e, em seguida, apresente o idioma adequado com base no valor:
=IIf([CountryRegion]="Italy", "Italian", IIf([CountryRegion]="France", "French", IIf([CountryRegion]="Germany", "German", "Some other language")))
O texto Some other language é o falsepart argumento da função mais IIf íntima. Uma vez que cada função aninhada é o falsepart argumento da IIf função que a contém, o texto Some other language é devolvido apenas se todos os expr argumentos das IIf funções forem avaliados como False.IIf
Outro exemplo: suponha que trabalha numa biblioteca. A base de dados da biblioteca tem um nome tabela que Check Outs contém um campo chamado Due Date, que contém a data do prazo de entrega de um determinado livro. Pode criar um formulário que mostre o estado de item com saída dada num controlo ao utilizar a IIf função na propriedade desse Control Source controlo:
=IIf([Due Date]<Date(),"OVERDUE",IIf([Due Date]=Date(),"Due today","Not Yet Due"))
Quando abre o formulário na Vista Formulário, o controlo mostra OVERDUE se o valor de Due Date for menor que a data atual, Due today se for igual à data atual e Not Yet Due caso contrário.
Nota
Para usar operadores lógicos como And ou Or no argumento da IIf função, você deve colocar a expr expressão lógica na função Eval. Veja os exemplos na tabela seguinte.
Utilizar IIf numa consulta
A IIf função é frequentemente utilizada para criar campos calculados em consultas. A sintaxe é a mesma, exceto que, numa consulta, tem de preceder a expressão com um alias do campo e dois pontos (:), em vez de um sinal de igual (=). Para utilizar o exemplo anterior, escreva o seguinte na linha Campo da grelha de estrutura da consulta:
Language: IIf([CountryRegion]="Italy", "Italian", "Some other language")
Neste caso, Language: é o alias do campo.
Para obter mais informações sobre como criar consultas e campos calculados, consulte Criar uma consulta selecionar simples.
Utilização IIf em código VBA
Nota
Os exemplos que se seguem mostram como utilizar esta função num módulo Visual Basic for Applications (VBA). Para obter mais informações sobre como trabalhar com o VBA, selecione Referência do desenvolvedor na lista suspensa ao lado de Pesquisar e insira um ou mais termos na caixa de pesquisa.
Este exemplo utiliza a IIf função para avaliar o TestMe parâmetro do CheckIt procedimento e devolve a palavra Large se o montante for superior a 1000. Caso contrário, devolverá a palavra Small.
Function CheckIt(TestMe As Integer)
CheckIt = IIf(TestMe > 1000, "Large", "Small")
End Function
Mais exemplos
Expressão:
=IIf([AirportCode]="ORD","Chicago",IIf([AirportCode]="ATL","Atlanta",IIf([AirportCode]="SEA","Seattle","Other")))Resultado: Se
[AirportCode]for"ORD", devolver"Chicago". Caso contrário, se[AirportCode]for"ATL", retorne"Atlanta". Caso contrário, se[AirportCode]for"SEA", retorne"Seattle". Caso contrário, retorne"Other".Expressão:
=IIf([ShipDate]<Date(),"Shipped",IIf([ShipDate]=Date(),"Shipping today","Unshipped"))Resultado: Se
[ShipDate]for anterior à data de hoje, devolver"Shipped". Caso contrário, se[ShipDate]for igual à data de hoje, devolver"Shipping today". Caso contrário, retorne"Unshipped".Expressão:
=IIf([PurchaseDate]<#1/1/2008#,"Old","New")Resultado: Se
[PurchaseDate]for anterior a1/1/2008, devolve"Old". Caso contrário, retorne"New".Expressão:
=IIf(Eval([Volts] Between 12 And 15 And [Amps] Between 0.25 And 0.3),"OK","Out of calibration")Resultado: Se
[Volts]estiver entre 12 e 15 e[Amps]entre 0,25 e 0,3, devolver"OK". Caso contrário, retorne"Out of calibration".Expressão:
=IIf(Eval([CountryRegion] In ("Canada","USA","Mexico")),"North America","Other")Resultado: Se
[CountryRegion]for"Canada","USA", ou"Mexico", devolver"North America". Caso contrário, retorne"Other".Expressão:
=IIf([Average]>=90,"A",IIf([Average]>=80,"B",IIf([Average]>=70,"C",IIf([Average]>=60,"D","F"))))Resultado: Se
[Average]for 90 ou maior, devolver"A". Caso contrário, se[Average]for 80 ou maior, retornar"B". Caso contrário, se[Average]for 70 ou maior, retornar"C". Caso contrário, se[Average]for 60 ou maior, retornar"D". Caso contrário, retorne"F".
Nota
Se estiver a utilizar a IIf função para criar um campo calculado numa consulta, substitua o sinal de igual (=) por um alias do campo e dois pontos (:). Por exemplo, Status: IIf([ShipDate]<Date(),"Shipped",IIf([ShipDate]=Date(),"Shipping today","Unshipped")).