Zwraca jedną z dwóch części, w zależności od obliczonego wyniku wyrażenia.
Możesz używać IIf wszystkich miejsc, w których możesz używać wyrażeń. Służy IIf do określania, czy inne wyrażenie ma wartość prawda czy fałsz. Zwraca jedną wartość, jeśli wyrażenie jest prawdziwe IIf . Jeśli jest fałszywa, IIf zwraca inną wartość. Ty określasz IIf zwracane 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. Zwracana wartość lub wyrażenie, jeżeli expr jest True. |
falsepart |
Argument wymagany. Zwracana wartość lub wyrażenie, jeżeli expr jest False. |
Spostrzeżenia
IIf Zawsze oblicza oba truepart oraz falsepart, nawet jeśli zwraca tylko jeden z nich. Ze względu na to zachowanie, należy uważać na niepożądane skutki uboczne. Na przykład, jeśli obliczenia falsepart dają wynik błędu dzielenia przez zero, błąd występuje, nawet jeśli expr wynosi True.
Przykłady
Użyj IIf w formularzu lub raporcie
Załóżmy, że istnieje tabela Customers zawierająca pole o nazwie CountryRegion. W formularzu chcesz pokazać, czy pierwszym językiem kontaktu jest włoski. Kontrolkę można dodać i użyć IIf w jej Control Source właściwości:
=IIf([CountryRegion]="Italy", "Italian", "Some other language")
Po otwarciu formularza w widoku formularza kontrolka jest wyświetlana Italian zawsze, gdy wartością argumentu CountryRegion jest Italy. Jest ona wyświetlana Some other language , gdy CountryRegion ma jakąkolwiek inną wartość.
Używaj IIf w złożonych wyrażeniach
Dowolnego wyrażenia można użyć w dowolnej części instrukcji IIf . Można także zagnieżdżać IIf wyrażenia, co pozwala na obliczanie serii wyrażeń zależnych. Kontynuując powyższy przykład, można 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 najbardziej IIf wewnętrznej funkcji. Ponieważ każda zagnieżdżona IIf funkcja jest argumentem IIffalsepart funkcji, która ją zawiera, tekst Some other language jest zwracany tylko wtedy, gdy wszystkie expr argumenty IIf funkcji mają wartość False.
Załóżmy również, że użytkownik pracuje w bibliotece. Baza danych biblioteki ma tabelę o nazwie Check Outs , która zawiera pole o nazwie Due Date, które zawiera datę, do której dana książka ma zostać zwrócona. Formularz pokazujący stan elementu wyewidencjonowanego w kontrolce można utworzyć przy użyciu IIf funkcji znajdującej się Control Source we właściwości tej kontrolki:
=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 jest równa bieżącej dacie i Not Yet Due w przeciwnym razie.
Uwaga
Aby użyć operatorów logicznych, takich jak And lub Or w expr argumencie IIf funkcji, należy ująć wyrażenie logiczne w funkcję Eval . Zobacz przykładową tabelę poniżej.
Użyj IIf w kwerendzie
Ta IIf funkcja jest często używana do tworzenia pól obliczeniowych w zapytaniach. Składnia jest taka sama, oprócz tego, że w zapytaniu wyrażenie należy poprzedzić aliasem pola i dwukropkiem (:) zamiast znakiem równości (=). Aby użyć powyższego przykładu, wpisz następujące wyrażenie w wierszu Pole siatki projektu kwerendy:
Language: IIf([CountryRegion]="Italy", "Italian", "Some other language")
W tym przypadku Language: jest aliasem 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 języka VBA
Uwaga
W poniższych przykładach pokazano, jak używać tej funkcji w module języka Visual Basic for Applications (VBA). Aby uzyskać więcej informacji na temat pracy w języku VBA, wybierz pozycję Dokumentacja dewelopera z listy rozwijanej obok pozycji Wyszukaj, a następnie wprowadź odpowiednie terminy w polu wyszukiwania.
W tym przykładzie funkcji użyto do IIf obliczenia TestMe parametru CheckIt procedury i zwrócenia słowa Large , jeśli wartość jest większa niż 1000. W przeciwnym razie zwraca słowo 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óć"Shipped". W przeciwnym razie, jeśli[ShipDate]jest równa dacie bieżącej, zwraca wartość"Shipping today". W przeciwnym razie zwróć"Unshipped".Wyrażenie:
=IIf([PurchaseDate]<#1/1/2008#,"Old","New")Wynik: Jeśli
[PurchaseDate]jest wcześniejszy niż1/1/2008, return"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","USA"lub"Mexico", return"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]wartość jest równa 90 lub większa, zwróć"A". W przeciwnym razie, jeśli[Average]wynosi 80 lub więcej, zwróć"B". W przeciwnym razie, jeśli[Average]wynosi 70 lub więcej, zwróć"C". W przeciwnym razie, jeśli[Average]wynosi 60 lub więcej, zwróć"D". W przeciwnym razie zwróć"F".
Uwaga
Jeśli używasz tej IIf funkcji do tworzenia pola obliczeniowego w zapytaniu, zastąp znak równości (=) aliasem pola i dwukropkiem (:). Na przykład Status: IIf([ShipDate]<Date(),"Shipped",IIf([ShipDate]=Date(),"Shipping today","Unshipped")).