Zwraca jedną z dwóch części, w zależności od obliczonego wyniku wyrażenia.
Możesz użyć IIf dowolnego miejsca, w które możesz używać wyrażeń. Służy IIf do określania, czy inne wyrażenie ma wartość prawdziwą, czy fałsz. Jeśli wyrażenie jest prawdziwe, IIf zwraca jedną wartość. Jeśli jest fałszywy, IIf zwraca inną wartość. Należy określić zwracane IIf wartości.
Składnia
IIf(expr, truepart, falsepart)
W IIf składni funkcji występują następujące argumenty:
| Argument | Opis |
|---|---|
expr |
Argument wymagany. Wyrażenie, które ma zostać obliczone. |
truepart |
Argument wymagany. Wartość lub wyrażenie zwracane, jeśli expr jest to Truewartość . |
falsepart |
Argument wymagany. Wartość lub wyrażenie zwracane, jeśli expr jest to Falsewartość . |
Spostrzeżenia
IIf zawsze ocenia oba truepart i falsepart, mimo że zwraca tylko jeden z nich. Ze względu na to zachowanie, uważaj na niechciane skutki uboczne. Na przykład w przypadku oceny falsepart wyników w przypadku błędu dzielenia na zero występuje błąd nawet wtedy, gdy expr jest to True.
Przykłady
Używanie IIf w formularzu lub raporcie
Załóżmy, że masz tabelę Customers zawierającą pole o nazwie CountryRegion. W formularzu chcesz pokazać, czy pierwszym językiem kontaktu jest włoski. Można dodać kontrolkę i użyć IIf jej Control Source właściwości:
=IIf([CountryRegion]="Italy", "Italian", "Some other language")
Po otwarciu formularza w widoku formularza kontrolka jest wyświetlana zawsze, gdy jest wyświetlana ItalianCountryRegionItalywartość . Jest on wyświetlany Some other language , gdy CountryRegion ma inną wartość.
Używanie IIf w złożonych wyrażeniach
W dowolnej IIf części instrukcji można użyć dowolnego wyrażenia. Można również zagnieżdżać IIf wyrażenia, co pozwala oceniać serię wyrażeń zależnych. Aby przejść do poprzedniego przykładu, możesz przetestować kilka różnych CountryRegion wartości, a następnie wyświetlić odpowiedni język na podstawie tej wartości:
=IIf([CountryRegion]="Italy", "Italian", IIf([CountryRegion]="France", "French", IIf([CountryRegion]="Germany", "German", "Some other language")))
Tekst Some other language jest argumentem falsepart najważniejszej IIf funkcji. Ponieważ każda funkcja zagnieżdżona jest argumentem IIf funkcji, która ją zawiera, tekst Some other language jest zwracany tylko wtedy, gdy wszystkie expr argumenty IIf funkcji mają wartość False.falsepartIIf
Załóżmy na przykład, że pracujesz w bibliotece. Baza danych biblioteki zawiera tabelę o nazwie Check Outs zawierającą pole o nazwie Due Date, które zawiera datę powrotu określonej książki. Możesz utworzyć formularz pokazujący stan wyewidencjonowanego elementu w kontrolce, używając IIf funkcji we właściwości tej kontrolki Control Source :
=IIf([Due Date]<Date(),"OVERDUE",IIf([Due Date]=Date(),"Due today","Not Yet Due"))
Po otwarciu formularza w widoku formularza kontrolka jest wyświetlana OVERDUE , jeśli wartość Due Date jest mniejsza niż bieżąca data, Due today jeśli jest równa bieżącej dacie i Not Yet Due w inny sposób.
Uwaga
Aby użyć operatorów logicznych, takich jak And lub Or argument exprIIf funkcji, należy ująć wyrażenie logiczne w funkcję Eval . Zobacz poniższą tabelę przykładowej.
Używanie IIf w zapytaniu
Ta funkcja jest często używana IIf do tworzenia pól obliczeniowych w zapytaniach. Składnia jest taka sama, z tym że w zapytaniu należy poprzedzić wyrażenie aliasem pola i dwukropkiem (:) zamiast znaku równości (=). Aby użyć poprzedniego przykładu, wpisz następujące wyrażenie w wierszu Pole siatki projektu zapytania:
Language: IIf([CountryRegion]="Italy", "Italian", "Some other language")
W takim przypadku Language: jest to alias pola.
Aby uzyskać więcej informacji na temat tworzenia zapytań i pól obliczeniowych, zobacz Tworzenie prostego zapytania wybierającego.
Użyj IIf w kodzie VBA
Uwaga
W poniższych przykładach pokazano, jak używać tej funkcji w module Visual Basic for Applications (VBA). Aby uzyskać więcej informacji na temat pracy z językiem VBA, wybierz pozycję Dokumentacja dewelopera z listy rozwijanej obok pozycji Wyszukiwanie, a następnie wprowadź jeden lub więcej terminów w polu wyszukiwania.
W tym przykładzie funkcja jest używana IIf do oceny TestMe parametru CheckIt procedury i zwraca wyraz Large , jeśli wartość jest większa niż 1000. W przeciwnym razie zwraca wyraz Small.
Function CheckIt(TestMe As Integer)
CheckIt = IIf(TestMe > 1000, "Large", "Small")
End Function
Więcej przykładów
Wyrażenie:
=IIf([AirportCode]="ORD","Chicago",IIf([AirportCode]="ATL","Atlanta",IIf([AirportCode]="SEA","Seattle","Other")))Wynik: Jeśli
[AirportCode]jest"ORD", zwróć"Chicago". W przeciwnym razie, jeśli[AirportCode]jest"ATL", zwróć"Atlanta". W przeciwnym razie, jeśli[AirportCode]jest"SEA", zwróć"Seattle". W przeciwnym razie zwróć ."Other"Wyrażenie:
=IIf([ShipDate]<Date(),"Shipped",IIf([ShipDate]=Date(),"Shipping today","Unshipped"))Wynik: jeśli
[ShipDate]jest wcześniejsza niż dzisiejsza data, zwróć wartość"Shipped". W przeciwnym razie, jeśli[ShipDate]jest równa dzisiejszej dacie, zwróć ."Shipping today"W przeciwnym razie zwróć ."Unshipped"Wyrażenie:
=IIf([PurchaseDate]<#1/1/2008#,"Old","New")Wynik: jeśli
[PurchaseDate]jest wcześniejsza niż1/1/2008, zwróć ."Old"W przeciwnym razie zwróć ."New"Wyrażenie:
=IIf(Eval([Volts] Between 12 And 15 And [Amps] Between 0.25 And 0.3),"OK","Out of calibration")Wynik: jeśli
[Volts]jest między 12 a 15 i[Amps]jest między 0,25 a 0,3, zwróć"OK". W przeciwnym razie zwróć ."Out of calibration"Wyrażenie:
=IIf(Eval([CountryRegion] In ("Canada","USA","Mexico")),"North America","Other")Wynik: jeśli
[CountryRegion]jest"Canada"to ,"USA"lub"Mexico", zwróć"North America". W przeciwnym razie zwróć ."Other"Wyrażenie:
=IIf([Average]>=90,"A",IIf([Average]>=80,"B",IIf([Average]>=70,"C",IIf([Average]>=60,"D","F"))))Wynik: Jeśli
[Average]jest to wartość 90 lub większa, zwróć wartość"A". W przeciwnym razie, jeśli[Average]jest to 80 lub więcej, zwróć wartość"B". W przeciwnym razie, jeśli[Average]ma wartość 70 lub większą, zwróć wartość"C". W przeciwnym razie, jeśli[Average]ma wartość 60 lub większą, zwróć wartość"D". W przeciwnym razie zwróć ."F"
Uwaga
Jeśli tworzysz pole obliczeniowe w zapytaniu za pomocą IIf tej funkcji, zamień znak równości (=) na alias pola i dwukropek (:). Na przykład Status: IIf([ShipDate]<Date(),"Shipped",IIf([ShipDate]=Date(),"Shipping today","Unshipped")).