式の評価によって、2 つの値のいずれか 1 つを返します。
IIf式を使用できる場所であればどこでも使用できます。
IIf を使用して、別の式が True か False かを判断します。 式が true の場合、 IIf は 1 つの値を返します。 false の場合、 IIf 別の値を返します。
IIf が返す値を指定します。
構文
IIf(expr, truepart, falsepart)
IIf 関数の構文には、次の引数があります。
| 引数 | 説明 |
|---|---|
expr |
必須。 評価する式です。 |
truepart |
必ず指定します。
expr が True の場合に返される値または式。 |
falsepart |
必ず指定します。
expr が False の場合に返される値または式。 |
解説
IIf
truepart と falsepart のどちらか一方のみが返されますが、常に両方が評価されます。 この動作のため、不要な副作用に注意してください。 たとえば、 falsepart の評価結果で 0 除算エラーが発生した場合、 expr が Trueであってもエラーが発生します。
例
フォームまたはレポートで IIf を使用する
CountryRegion という名前のフィールドを含む Customers テーブルがあるとします。 フォームでは、イタリア語が連絡先の第一言語であるかどうかを示します。 コントロールを追加し、その Control Source プロパティで IIf を使用できます。
=IIf([CountryRegion]="Italy", "Italian", "Some other language")
フォーム ビューでフォームを開くと、CountryRegion の値がItalyになるたびにコントロールに 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は、最も内側の IIf 関数のfalsepart引数です。 入れ子になった各 IIf 関数は、それを含む IIf 関数のfalsepart引数であるため、テキスト Some other languageは、IIf関数の expr 引数がすべて False と評価された場合にのみ返されます。
別の例として、図書館で働いているとします。 ライブラリ データベースには、Due Date という名前のフィールドを含む Check Outs という名前のテーブルがあります。このフィールドには、特定の書籍の期限の日付が含まれています。 コントロールの Control Source プロパティの IIf 関数を使用して、コントロール内のチェックアウト済みアイテムの状態を表示するフォームを作成できます。
=IIf([Due Date]<Date(),"OVERDUE",IIf([Due Date]=Date(),"Due today","Not Yet Due"))
フォーム ビューでフォームを開くと、Due Date の値が現在の日付より小さい場合は OVERDUE、現在の日付と等しい場合は Due today、それ以外の場合はNot Yet Dueが表示されます。
注
IIf 関数の expr 引数で And や Or などの論理演算子を使用するには、Eval 関数で論理式を囲む必要があります。 後続のサンプル表を参照してください。
クエリで IIf を使用する
IIf 関数は、クエリで集計フィールドを作成するためによく使用されます。 構文は同じですが、クエリで式の前に等号 (=) ではなくフィールド エイリアスとコロン (:) を付ける必要があります。 上記の例を使用するには、クエリ デザイン グリッドの [フィールド ] 行に次のように入力します。
Language: IIf([CountryRegion]="Italy", "Italian", "Some other language")
この場合、 Language: はフィールド エイリアスです。
クエリと集計フィールドの作成の詳細については、「 単純な選択クエリの作成」を参照してください。
VBA コードで IIf を使用する
注
次の例は、Visual Basic for Applications (VBA) モジュールでこの関数を使用する方法を示しています。 VBA の操作の詳細については、[検索] の横にあるドロップダウン リストで [開発者向けリファレンス] を選択し、検索ボックスに 1 つ以上の用語を入力します。
この例では、IIf 関数を使用して CheckIt プロシージャの TestMe パラメーターを評価し、値が 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]が"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")) 」のように入力します。