根據 運算式的評估,傳回兩個部分的其中之一。
您可以在任何可以使用表達式的任何地方使用 IIf 。 您可以使用 IIf 來判斷另一個運算式是否為 True 或 False。 如果表達式為 True,IIf 會 傳回一個值;如果是 False,IIf 會 傳回另一個。 您可以指定 IIf 傳 回的值。
語法
IIf ( expr 、 truepart 、 falsepart )
IIf 函數語法具有下列自變數:
引數 |
描述 |
expr |
必要。 您要評估的表達式。 |
truepart |
必要。 expr 為 True 時 傳 回的值或表示 式。 |
falsepart |
必要。 expr 為 False 時 傳 回的值或表示 式。 |
註解
IIf 一律會評估 truepart 和 falsepart,即使它只傳回其中一個。 因此,您應該 watch 不受歡迎的副作用。 例如,如果評估 falsepart 會導致除數為零錯誤,即使 expr 為 True,也會發生錯誤。
範例
在表單或報表上使用If 假設您有一個名為 CountryRegion 的 [客戶] 數據表。 在表單中,您想要表示義大利文是否為聯繫人的第一種語言。 您可以在其 [控制項來源] 屬性中新增控制項並使用 IIf,如下所示:
=IIf ([CountryRegion]=“Italy”, “Italian”, “Some other language”)
當您在 [表單視圖] 中開啟窗體時,每當 CountryRegion 的值是義大利時,控件就會顯示 “Italian”,每當 CountryRegion 是任何其他值時,控件就會顯示 “Some Other language”。
在複雜的表達式中使用If 您可以使用任何運算式做為 IIf 語句 的任何部分。 您也可以「巢狀」 IIf 表達式,讓您評估一系列從屬表達式。 若要繼續使用上一個範例,建議您測試幾個不同的 CountryRegion 值,然後根據值存在而顯示適當的語言:
=IIf ([CountryRegion]=“Italy”, “Italian”, IIf ([CountryRegion]=“France”, “French”, IIf ([CountryRegion]=“Germany”, “German”, “Some other language”) ) )
文字「其他語言」是最內部If函數的 falsepart 自變數。 由於每個巢狀 IIf 函數都是包含該函數之 IIf 函數的 falsepart 自變數,因此只有在所有 IIf 函數的 expr 自變數都評估為 False 時,才會傳回 “Some other language” 文字。
另一個範例是,假設您在文檔庫工作。 文件庫資料庫有一個名為 [取出] 的數據表,其中包含一個名為 [到期日] 的欄位,其中包含特定書籍的到期日。 您可以在控件的 [控件來源] 屬性中使用 IIf 函數,建立表單來指出控件中已取出項目的狀態,如下所示:
=IIf ([Due Date]<Date () ,“OVERDUE”,IIf ([Due Date]=Date () ,“今天到期”,“還未到期”) )
當您在 [表單視圖] 中開啟表單時,如果 [到期日] 的值小於目前日期,控件會顯示 “DUE”;如果 [今天到期] 等於目前日期,則控件會顯示 “DUE”;否則則顯示 [未到期]。
附註: 若要在 IIf 函數的 expr 自變數中使用 「And」 或 「Or」 等邏輯運算符,您必須在 Eval 函數中括住邏輯表達式。 請參閱下列範例數據表。
在查詢中使用IF
IIf 函數常用於在查詢中建立匯出欄位。 語法是相同的,除了在查詢中,您必須在表達式的開頭加上字段別名和冒號 (:) 而非等號 (=) 。 若要使用上述範例,請在查詢設計網格線的 [字段 ] 列中輸入下列內容:
語言:IIf ([CountryRegion]=“Italy”, “Italian”, “Some other language”)
在此情況下,「語言:」是欄位別名。
如需建立查詢和匯出字段的詳細資訊,請參閱 建立簡易選取查詢一文。
在 VBA 程序代碼中使用 IIf
附註: 下列範例示範如何在 Visual Basic for Applications (VBA) 模組中使用此函數。 如需使用 VBA 的詳細資訊,請在 [搜尋] 旁的下拉式清單中選取 [開發人員參考],並在 [搜尋] 方塊中輸入一個或多個字詞。
此範例使用 IIf 函數來評估 CheckIt 程式的 TestMe 參數,如果金額大於 1000,則會傳回 “Large” 這個字;否則,它會傳回「小」一詞。
Function CheckIt (TestMe As Integer)
CheckIt = IIf(TestMe > 1000, "Large", "Small") End Function
更多範例
Expression |
結果 |
=IIf ([AirportCode]=“ORD”,“Chicago”,IIf ([AirportCode]=“ATL”,“Seattle”,IIf ([AirportCode]=“SEA”,“Seattle”,“Other”) ) ) |
如果 [AirportCode] 為 “ORD”,請傳回 “Chicago”。 否則,如果 [AirportCode] 為 「ATL」,則傳回 「碼」。。 否則,如果 [AirportCode] 為 “SEA”,則傳回 “Seattle”。 否則,請傳回「其他」。 |
=IIf ([ShipDate]<Date () ,“Shipped”,IIf ([ShipDate]=Date () ,“今天出貨”,“取消交貨”) ) |
如果 [ShipDate] 早於今天的日期,傳回「已出貨」。 否則,如果 [ShipDate] 等於今天的日期,則傳回「今天出貨」。 否則,請傳回「未移位」。 |
=IIf ([PurchaseDate]<#2008/1/1#,“Old”,“New”) |
如果 [PurchaseDate] 是在 2008/1/1 之前,則傳回 “Old”。 否則,請傳回「新增」。 |
=IIf (Eval ([Volts] Between 12 And 15 And [Amps] Between 0.25 And 0.3) ,“OK”,“不校正”) |
如果 [伏特] 在 12 到 15 之間,而 [Amps] 在 0.25 到 0.3 之間,則傳回 「確定」。 否則,請傳回「未校正」。 |
=IIf (Eval ([CountryRegion] In (“Canada”,“USA”,“Mexico”) ) ,“北美洲”,“Other”) |
如果 [CountryRegion] 是 “Canada”、“USA” 或 “Mexico”,則傳回 “北美洲”。 否則,請傳回「其他」。 |
=IIf ([Average]>=90,“A”,IIf ([Average]>=80,“B”,IIf ([Average]>=70,“C”,IIf ([Average]>=60,“D”,“F”) ) ) ) |
如果 [平均] 是 90 或更高,則傳回 “A”。 否則,如果 [平均] 為 80 或更高,則傳回 “B”。 否則,如果 [平均] 為 70 或更高,則傳回 “C”。 否則,如果 [平均] 為 60 或更高,則傳回 “D”。 否則,請傳回 “F”。 |
附註: 如果您使用 IIf 函數在查詢中建立匯出欄位,請將等號 (=) 取代為欄位別名和冒號 (:) 。 例如 ,狀態:IIf ([ShipDate]<Date () ,“Shipped”,IIf ([ShipDate]=Date () ,“Ship today”,“Unshipped”) )