Возвращает одну из двух частей в зависимости от вычисленного значения выражения.
Вы можете использовать IIf любое место, где можно использовать выражения. Используйте для IIf определения того, является ли другое выражение истинным или ложным. Если выражение имеет значение true, IIf возвращает одно значение. Если значение равно false, IIf возвращает другое значение. Вы указываете возвращаемые IIf значения.
Синтаксис
IIf(expr, truepart, falsepart)
Синтаксис IIf функции имеет следующие аргументы:
| Аргумент | Описание |
|---|---|
expr |
Обязательный аргумент. Выражение, которое требуется вычислить. |
truepart |
— обязательный аргумент. Значение или выражение возвращается, если expr имеет значение True. |
falsepart |
— обязательный аргумент. Значение или выражение возвращается, если expr имеет значение False. |
Замечания
IIf всегда вычисляет и truepart , и falsepart, хотя возвращает только один из них. Из-за такого поведения следите за нежелательными побочными эффектами. Например, если вычисление falsepart приводит к ошибке деления на ноль, ошибка возникает, даже если expr имеет значение True.
Примеры
Использование IIf в форме или отчете
Предположим, что у вас есть Customers таблица, содержащая поле с именем CountryRegion. В форме вы хотите показать, является ли итальянский язык первым языком контакта. Вы можете добавить элемент управления и использовать IIf в его свойстве Control Source :
=IIf([CountryRegion]="Italy", "Italian", "Some other language")
При открытии формы в представлении формы элемент управления отображается Italian всякий раз, когда значение для CountryRegion имеет значение Italy. Он отображается Some other language всякий раз CountryRegion , когда имеет любое другое значение.
Использование IIf в сложных выражениях
Любое выражение можно использовать в любой IIf части инструкции. Можно также вложить IIf выражения, что позволяет оценить ряд зависимых выражений. Чтобы продолжить работу с предыдущим примером, может потребоваться протестировать несколько разных CountryRegion значений, а затем отобразить соответствующий язык на основе значения:
=IIf([CountryRegion]="Italy", "Italian", IIf([CountryRegion]="France", "French", IIf([CountryRegion]="Germany", "German", "Some other language")))
Текст Some other language является аргументом falsepart внутренней IIf функции. Так как каждая вложенная IIf функция является аргументом IIffalsepart функции, содержащей ее, текст Some other language возвращается только в том случае, если все expr аргументы IIf функций имеют значение False.
В другом примере предположим, что вы работаете в библиотеке. База данных библиотеки содержит таблицу с именем Check Outs , содержащую поле с именем Due Date, которое содержит дату возврата определенной книги. Форму, отображающую состояние извлеченного элемента в элементе управления, можно создать с помощью IIf функции в свойстве Control Source этого элемента управления:
=IIf([Due Date]<Date(),"OVERDUE",IIf([Due Date]=Date(),"Due today","Not Yet Due"))
При открытии формы в представлении формы элемент управления отображает OVERDUE значение меньше текущей Due Date даты, Due today если оно равно текущей дате, и Not Yet Due в противном случае.
Примечание
Чтобы использовать логические операторы, такие как And или Or , в expr аргументе IIf функции, необходимо заключить логическое выражение в функцию Eval . См. пример таблицы ниже.
Использование IIf в запросе
Функция IIf часто используется для создания вычисляемых полей в запросах. Синтаксис тот же, за исключением того, что в запросе необходимо предварять выражение псевдонимом поля и двоеточием (:) вместо знака равенства (=). Чтобы использовать предыдущий пример, введите следующую команду в строке Поле сетки конструктора запроса:
Language: IIf([CountryRegion]="Italy", "Italian", "Some other language")
В этом случае Language: — это псевдоним поля.
Дополнительные сведения о создании запросов и вычисляемых полей см. в статье Создание простого запроса на выборку.
Использование IIf в коде VBA
Примечание
В следующих примерах показано, как использовать эту функцию в модуле Visual Basic для приложений (VBA). Для получения дополнительных сведений о работе с VBA выберите Справочник разработчика в раскрывающемся списке рядом с полем Поиск, а затем введите одно или несколько терминов в поле поиска.
В этом примере функция используется IIf для вычисления TestMe параметра CheckIt процедуры и возвращает слово Large , если значение больше 1000. В противном случае возвращается слово Small.
Function CheckIt(TestMe As Integer)
CheckIt = IIf(TestMe > 1000, "Large", "Small")
End Function
Дополнительные примеры
Выражение:
=IIf([AirportCode]="ORD","Chicago",IIf([AirportCode]="ATL","Atlanta",IIf([AirportCode]="SEA","Seattle","Other")))Результат. Если
[AirportCode]имеет значение"ORD", возвращается"Chicago". В противном случае, если[AirportCode]имеет значение"ATL", возвращается"Atlanta". В противном случае, если[AirportCode]имеет значение"SEA", возвращается"Seattle". В противном случае возвращается"Other".Выражение:
=IIf([ShipDate]<Date(),"Shipped",IIf([ShipDate]=Date(),"Shipping today","Unshipped"))Результат. Если
[ShipDate]значение раньше сегодняшней даты, возвращается"Shipped". В противном случае, если[ShipDate]равно сегодняшней дате, возвращается"Shipping today". В противном случае возвращается"Unshipped".Выражение:
=IIf([PurchaseDate]<#1/1/2008#,"Old","New")Результат. Если
[PurchaseDate]значение более раннее , возвращается1/1/2008"Old". В противном случае возвращается"New".Выражение:
=IIf(Eval([Volts] Between 12 And 15 And [Amps] Between 0.25 And 0.3),"OK","Out of calibration")Результат. Если
[Volts]значение находится в диапазоне от 12 до 15 и[Amps]находится в диапазоне от 0,25 до 0,3, возвращается значение"OK". В противном случае возвращается"Out of calibration".Выражение:
=IIf(Eval([CountryRegion] In ("Canada","USA","Mexico")),"North America","Other")Результат. Если
[CountryRegion]имеет значение"Canada","USA"или"Mexico", возвращается"North America". В противном случае возвращается"Other".Выражение:
=IIf([Average]>=90,"A",IIf([Average]>=80,"B",IIf([Average]>=70,"C",IIf([Average]>=60,"D","F"))))Результат. Если
[Average]значение равно 90 или больше, возвращается"A"значение . В противном случае, если[Average]значение равно 80 или больше, возвращается"B"значение . В противном случае, если[Average]значение равно 70 или больше, возвращается"C"значение . В противном случае, если[Average]значение равно 60 или больше, возвращается"D"значение . В противном случае возвращается"F".
Примечание
Если функция используется IIf для создания вычисляемого поля в запросе, замените знак равенства (=) псевдонимом поля и двоеточием (:). Например, Status: IIf([ShipDate]<Date(),"Shipped",IIf([ShipDate]=Date(),"Shipping today","Unshipped")).