Vrátí jednu ze dvou částí v závislosti na vyhodnocení výrazu.
Funkci IIf můžete použít všude, kde se dají používat výrazy. Funkcí IIf můžete určit, jestli je nějaký výraz pravda nebo nepravda. Pokud je výraz pravdivý, funkce IIf vrátí určitou hodnotu, když je výraz nepravdivý, vrátí funkce IIf jinou hodnotu. Hodnoty vracené funkcí IIf je potřeba nastavit.
Syntaxe
IIf(výraz;truepart;falsepart)
Syntaxe funkce IIf obsahuje tyto argumenty:
| Argument | Popis |
|---|---|
| výraz | Povinný argument. Výraz, který chcete vyhodnotit. |
| pravdivá_část | Povinný argument. Hodnota nebo výraz vrácený, pokud výraz má hodnotu True. |
| část_false | Povinný argument. Hodnota nebo výraz vrácený, pokud výraz je Nepravda. |
Poznámky
IIf vždy vyhodnocuje truepart i falsepart, i když vrací jenom jednu z nich. Z tohoto důvodu je potřeba dávat pozor na nežádoucí vedlejší účinky. Pokud například vyhodnocení falsepart vede k chybě dělení nulou, dojde k chybě i v případě, že výraz má hodnotu True.
Příklady
Použití funkce IIf ve formuláři nebo sestavě Předpokládejme, že máte tabulku Zákazníci, která obsahuje pole s názvem ZeměRegion. Ve formuláři chcete označit, jestli je prvním jazykem kontaktu italština. Můžete přidat ovládací prvek a použít IIf v jeho vlastnosti Zdroj ovládacího prvku , například takto:
=IIf([Země]="Itálie", "Italština", "Jiný jazyk")
Když nyní otevřete formulář v zobrazení formuláře, zobrazuje ovládací prvek hodnotu "Italština", pokud je hodnota pole Země Itálie a "Jiný jazyk", pokud je hodnota pole Země jiná.
Použití IIf ve složitých výrazech Jako součást příkazu IIf můžete použít libovolný výraz. Můžete také "vnořit" výrazy IIf , což vám umožní vyhodnotit řadu závislých výrazů. Pokud chcete pokračovat v předchozím příkladu, můžete otestovat několik různých hodnot CountryRegion a pak zobrazit odpovídající jazyk v závislosti na tom, která hodnota existuje:
=IIf([Země]="Itálie", "Italština", IIf([Země]="Francie", "Francouzština", IIf([Země]="Německo", "Němčina", "Jiný jazyk")))
Text "Jiný jazyk" je argumentem falsepart funkce IIf , která je nejvnitřnější. Vzhledem k tomu, že každá vnořená funkce IIf je argumentem falsepart funkce IIf , která ji obsahuje, text "Jiný jazyk" se vrátí pouze v případě, že se všechny argumenty výrazu všech funkcí IIf vyhodnotí jako Nepravda.
V jiném příkladu předpokládejme, že pracujete v knihovně. Databáze knihovny obsahuje tabulku s názvem Rezervovat, která obsahuje pole s názvem Termín splnění, které obsahuje datum vrácení určité knihy. Pomocí funkce IIf ve vlastnosti Zdroj ovládacího prvku můžete vytvořit formulář, který označuje stav rezervované položky v ovládacím prvku, například takto:
=IIf([Due Date]<Date();"OVERDUE";IIf([Due Date]=Date();"Due today";"Not Yet Due"))
Když nyní otevřete formulář v zobrazení formuláře, zobrazuje ovládací prvek hodnotu "ZPOŽDĚNO", pokud je hodnota pole Datum_vrácení menší než dnešní datum, "Vrátit dnes" pokud se obě data rovnají, a "Datum_vrácení dosud nenastalo" v ostatních případech.
Poznámka
Pokud chcete v argumentu výraz funkce IIf použít logické operátory, jako je "And" nebo "Or", musíte logický výraz uzavřít do funkce Eval . Podívejte se na následující ukázku tabulky.
Použití funkce IIf v dotazu
Funkce IIf se často používá pro vytvoření výpočtových polí v dotazech. Syntaxe je stejná, s výjimkou toho, že v dotazu musíte před výrazem použít alias pole a dvojtečku (:) místo rovnítku (=). Když se vrátíme k předcházejícímu příkladu, do řádku Pole návrhové mřížky dotazu byste zadali toto:
Jazyk: IIf([Země]="Itálie", "Italština", "Jiný jazyk")
V tomto případě je alias pole "Jazyk:".
Další informace o vytváření dotazů a počítaných polí najdete v článku Vytvoření jednoduchého výběrového dotazu.
Použití funkce IIf v kódu jazyka VBA
Poznámka
Následující příklady ukazují použití této funkce v modulu VBA (Visual Basic pro Applications). Pokud chcete další informace o práci s modulem VBA, vyberte Referenční informace pro vývojáře, které najdete v rozevíracím seznamu vedle položky Hledat a do vyhledávacího pole napište požadované pojmy.
V tomto příkladu je pomocí funkce IIf vyhodnocen parametr TestMe procedury CheckIt a v případě hodnoty větší než 1 000 je vrácen řetězec "Velký". V opačném případě je vrácen řetězec "Malý".
Function CheckIt (TestMe As Integer)
CheckIt = IIf(TestMe > 1000, "Large", "Small")
End Function
Další příklady
Výraz:
=IIf([Kód_letiště]="PRG","Praha",IIf([Kód_letiště]="FRA","Frankfurt",IIf([Kód_letiště]="BRU","Brusel","Jiné")))
Výsledek:
Pokud je [Kód_letiště] "PRG", vrátí "Praha". Jinak, když [Kód_letiště] je "FRA", vrátí "Frankfurt". Jinak pokud [Kód_letiště] je "BRU", vrátí "Brusel". V ostatních případech vrátí "Jiné".
Výraz:
=IIf([Datum_expedice]<Date();"Odesláno";IIf([Datum_odeslání]=Date();"Odeslání dnes";"Neodeslané"))
Výsledek:
Pokud [Datum_odeslání] předchází dnešnímu datu, vrátí "Odesláno". Jinak pokud se [Datum_odeslání] rovná dnešnímu datu, vrátí "Zasláno dnes". V ostatních případech vrátí "Neodesláno."
Výraz:
=IIf([Datum nákupu]<#1.1.2008#;"Starý";"Nový")
Výsledek:
Pokud je [Datum_nákupu] dřívější než 1/1/2008, vrátí hodnotu "Starý". Jinak vrátí hodnotu "Nový."
Výraz:
=IIf(Vyhodnotit([Volty] Between 12 And 15 And [Ampéry] Between 0,25 And 0,3),"OK","Nezkalibrováno")
Výsledek:
Pokud je argument [Volty] v rozmezí od 12 do 15 a argument [Ampéry] v rozmezí 0,25 a 0,3, vrátí "OK". Jinak vrátí "Nezkalibrováno."
Výraz:
=IIf(Vyhodnotit([Země] In ("Kanada","USA","Mexiko")),"Severní Amerika","Jiné")
Výsledek:
Pokud argument [Země] je "Kanada", "USA" nebo "Mexiko", vrátí "Severní Amerika". Jinak vrátí "Jiné".
Výraz:
=IIf([Průměr]>=90;"A";IIf([Průměr]>=80;"B";IIf([Průměr]>=70;"C";IIf([Průměr]>=60;"D","F"))))
Výsledek:
Pokud je hodnota [Průměr] 90 nebo vyšší, vrátí hodnotu "A". Jinak když je [Průměr] 80 a víc, vrátí "B". Jinak pokud je [Průměr] 70 a víc, vrátí "C". Jinak jestliže je [Průměr] 60 a víc, vrátí "D". V ostatních případech vrátí "F".
Poznámka
Pokud k vytvoření počítaných polí v dotazu používáte funkci IIf , nahraďte znaménko rovná se (=) aliasem pole a dvojtečkami (:). Například Status: IIf([ShipDate]<Date(),"Shipped",IIf([ShipDate]=Date();"Shipping today","Unshipped"))