IIf 函數

Applies To
Access for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

會視運算式的評估而定,傳回兩個部分的其中一個部分。

您可以使用 IIf 運算式的任何位置。 IIf用來判斷另一個運算式是 True 或 False。 如果運算式為 true, IIf 則會傳回一個值。 如果是 false, IIf 則會傳回另一個值。 指定傳 IIf 回的值。

請參閱一些範例

語法

IIf(expr, truepart, falsepart)

IIf函數語法具有下列引數:

引數 描述
expr 必要。 您要評估的運算式。
truepart 必要。 如果 是True,則expr傳回的值或運算式。
falsepart 必要。 如果 是False,則expr傳回的值或運算式。

註解

IIf 一律會同時評估 truepartfalsepart,即使它只傳回其中一個。 由於此行為,請注意不必要的副作用。 例如,如果評估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 languageIIf

再舉另一個例子,假設您在圖書館工作。 文件庫資料庫有一個名為 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

更多範例

  1. 運算式:

    =IIf([AirportCode]="ORD","Chicago",IIf([AirportCode]="ATL","Atlanta",IIf([AirportCode]="SEA","Seattle","Other")))
    

    結果:如果是,則[AirportCode]傳回 "Chicago""ORD" 否則,如果 [AirportCode]"ATL",則傳回 "Atlanta"。 否則,如果 [AirportCode]"SEA",則傳回 "Seattle"。 否則,請傳回 "Other"

  2. 運算式:

    =IIf([ShipDate]<Date(),"Shipped",IIf([ShipDate]=Date(),"Shipping today","Unshipped"))
    

    結果:如果早於今天的日期,則 [ShipDate] 傳回 "Shipped"。 否則,如果等於今天的日期,則 [ShipDate] 傳回 "Shipping today"。 否則,請傳回 "Unshipped"

  3. 運算式:

    =IIf([PurchaseDate]<#1/1/2008#,"Old","New")
    

    結果:如果早於 ,則[PurchaseDate]傳回"Old"1/1/2008 否則,請傳回 "New"

  4. 運算式:

    =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"

  5. 運算式:

    =IIf(Eval([CountryRegion] In ("Canada","USA","Mexico")),"North America","Other")
    

    結果:如果 [CountryRegion]"Canada""USA""Mexico",傳回 "North America"。 否則,請傳回 "Other"

  6. 運算式:

    =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"))