會視運算式的評估而定,傳回兩個部分的其中一個部分。
您可以使用 IIf 運算式的任何位置。
IIf用來判斷另一個運算式是 True 或 False。 如果運算式為 true, IIf 則會傳回一個值。 如果是 false, IIf 則會傳回另一個值。 指定傳 IIf 回的值。
語法
IIf(expr, truepart, falsepart)
IIf函數語法具有下列引數:
| 引數 | 描述 |
|---|---|
expr |
必要。 您要評估的運算式。 |
truepart |
必要。 如果 是True,則expr傳回的值或運算式。 |
falsepart |
必要。 如果 是False,則expr傳回的值或運算式。 |
註解
IIf 一律會同時評估 truepart 和 falsepart,即使它只傳回其中一個。 由於此行為,請注意不必要的副作用。 例如,如果評估falsepart結果為零除法錯誤,即使 是 True,也會expr發生錯誤。
範例
在表單或報表上使用IIf
假設您有一個 Customers 資料表,其中包含名為 CountryRegion的欄位。 在表單中,您要顯示義大利文是否是連絡人的母語。 您可以新增控制項, IIf 並在其 Control Source 屬性中使用:
=IIf([CountryRegion]="Italy", "Italian", "Some other language")
當您在 [表單檢視] 中開啟表單時,只要 的CountryRegionItaly值為 ,就會顯示控制項。Italian 只要有任何其他值,它就會CountryRegion顯示Some other language。
IIf用於複雜的運算式
您可以在陳述式的任何 IIf 部分中使用任何運算式。 您也可以巢狀 IIf 運算式,讓您評估一系列相依運算式。 若要繼續上述範例,您可能需要測試數個不同的 CountryRegion 值,然後根據值顯示適當的語言:
=IIf([CountryRegion]="Italy", "Italian", IIf([CountryRegion]="France", "French", IIf([CountryRegion]="Germany", "German", "Some other language")))
文字 Some other language 是最 falsepart 裡面 IIf 函數的引數。 由於每個巢狀函數都是falsepart包含它的函數的引數IIf,因此只有在expr函數的所有IIf引數結果為 時False,才會傳回文字Some other language。IIf
再舉另一個例子,假設您在圖書館工作。 文件庫資料庫有一個名為 Check Outs 的資料表,其中包含名為 Due Date的欄位,其中包含特定書籍的到期日。 您可以使用控制項屬性中的函數,建立 IIf 顯示控制項 Control Source 中已取出項目狀態的表單:
=IIf([Due Date]<Date(),"OVERDUE",IIf([Due Date]=Date(),"Due today","Not Yet Due"))
當您在 [表單檢視] 中開啟表單時,控制Due Date項的值是否小於目前日期、Due today是否等於目前日期Not Yet Due,以及其他值都會顯示OVERDUE。
注意
若要在函數的IIf引數中使用expr邏輯運算子And,例如 或Or,您必須將邏輯運算式括在 Eval 函數中。 請參閱下列範例表格。
IIf在查詢中使用
此 IIf 函數通常用於在查詢中建立導出欄位。 語法相同,差異在於在查詢中,您必須在運算式前面加上欄位別名和冒號, (: 冒號) ,而不是) (= 等號。 若要使用上述範例,請在查詢設計格線的 [欄位 ] 列中輸入下列內容:
Language: IIf([CountryRegion]="Italy", "Italian", "Some other language")
在此情況下, Language: 是欄位別名。
如需建立查詢和計算欄位的詳細資訊,請參閱 建立簡單的選取查詢。
IIf在 VBA 程式碼中使用
注意
下列範例示範如何在 Visual Basic for Applications (VBA) 模組中使用此函數。 如需有關使用 VBA 的詳細資訊,請從 [搜尋] 旁的下拉式清單中選取 [開發人員參考],然後在搜尋方塊中輸入一或多個字詞。
此範例使用函數來 IIf 評估 TestMe 程序的 CheckIt 參數,如果金額大於 1000,則傳回字 Large 詞。 否則,它會傳回單字 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]傳回"Chicago"。"ORD"否則,如果[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]傳回"Old"。1/1/2008否則,請傳回"New"。運算式:
=IIf(Eval([Volts] Between 12 And 15 And [Amps] Between 0.25 And 0.3),"OK","Out of calibration")結果:如果介於 12 和 15 之間,
[Amps]且介於 0.25 和 0.3 之間,則[Volts]傳回"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"))))結果:如果為 90 或更高,則
[Average]傳回"A"。 否則,如果為 80 或更高,則[Average]傳回"B"。 否則,如果為 70 或更高,則[Average]傳回"C"。 否則,如果為 60 或更高,則[Average]傳回"D"。 否則,請傳回"F"。
注意
如果您使用函數在 IIf 查詢中建立導出欄位,請將等號 (=) 取代為欄位別名和冒號 (:) 。 例如,Status: IIf([ShipDate]<Date(),"Shipped",IIf([ShipDate]=Date(),"Shipping today","Unshipped"))。