式の評価によって、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 がゼロで除算した値になると評価された場合、expr が True でもエラーが発生します。
使用例
フォームまたはレポートで IIf を使う CountryRegion フィールドを含む Customers テーブルがあるとします。 フォーム内で、連絡先の第一言語がイタリア語であるかどうかを示す必要があります。 コントロールを追加し、[コントロールソース] プロパティで次のように IIf を使うことができます。
=IIf([CountryRegion]="イタリア", "イタリア語", "他の言語")
フォーム ビューでフォームを開いたときに、CountryRegion の値がイタリアの場合は、コントロールに "イタリア語" が表示され、その他の値の場合は、"他の言語" が表示されます。
複雑な式で IIf を使う IIf ステートメントの一部として式を使うことができます。 IIf 式を "ネスト" して、一連の従属式を評価することもできます。 上記の例を続ける場合は、複数のさまざまな CountryRegion 値をテストして、存在する値に応じて適切な言語を表示することができます。
=IIf([CountryRegion]="イタリア", "イタリア語", IIf([CountryRegion]="フランス", "フランス語", IIf([CountryRegion]="ドイツ", "ドイツ語", "他の言語")))
テキスト "Some other language" は IIf 関数の最も内側の falsepart 引数です。 ネストされた各 IIf 関数は、それを含む IIf 関数の falsepart 引数であるため、すべての IIf 関数のすべての expr 引数が False を返した場合のみ、テキスト "他の言語" が返されます。
もう 1 つの例として、図書館で勤務している場合を考えてみましょう。 図書館データベースには Check Outs テーブルがあり、その中の Due Date フィールドには特定の本の返却日が含まれています。 フォームを作成し、コントロールの [コントロール ソース] プロパティで次のように IIf 関数を使うと、貸し出されたアイテムの状態をそのコントロールで示すことができます。
=IIf([Due Date]<Date(),"期限超過",IIf([Due Date]=Date(),"期限当日","期限前"))
フォーム ビューでフォームを開くと、Due Date の値が現在日より前の場合、そのコントロールには "期限超過" と表示されます。Due Date の値が現在日に等しい場合は "期限当日" と表示され、それ以外の場合は "期限前" と表示されます。
注: IIf 関数の expr 引数で And" や "Or" などの論理演算子を使う場合は、Eval 関数で論理式を囲む必要があります。 後続のサンプル表を参照してください。
クエリ内で IIf を使う
IIf 関数はクエリ内で集計フィールドを作成する場合によく使われます。 構文は同じですが、クエリ内では式の前に等号 (=) でなく、フィールド エイリアスとコロン (:) を配置する必要があります。 上記の例を使うには、クエリ デザイン グリッドの [フィールド] 行に次のように入力します。
Language: IIf([CountryRegion]="イタリア", "イタリア語", "他の言語")
この場合、"Language:" はフィールドの別名です。
クエリおよび集計フィールドの詳細については、記事「簡単な選択クエリを作成する」を参照してください。
VBA コードで IIf を使う
注: 次の例は、Visual Basic for Applications (VBA) モジュールでのこの関数の使用方法を示しています。 VBA の使用方法の詳細については、[検索] の横にあるドロップダウン リストで [開発者用リファレンス] を選び、検索ボックスに検索する用語を入力します。
この例では、IIf 関数を使って CheckIt プロシージャの TestMe パラメーターを評価し、引数が 1000 より大きい場合は "大きい" を、それ以外の場合は "小さい" を返します。
Function CheckIt (TestMe As Integer)
CheckIt = IIf(TestMe > 1000, "Large", "Small") End Function
その他の例
式 |
結果 |
=IIf([AirportCode]="ORD","シカゴ",IIf([AirportCode]="ATL","アトランタ",IIf([AirportCode]="SEA","シアトル","その他"))) |
If [AirportCode] が "ORD" の場合は、"シカゴ" を返します。 それ以外の場合で、[AirportCode] が "ATL" の場合は、"アトランタ" を返します。 それ以外の場合で、[AirportCode] が "SEA" の場合は、"シアトル" を返します。 それ以外の場合は、"その他" を返します。 |
=IIf([ShipDate]<Date(),"出荷済み",IIf([ShipDate]=Date(),"本日出荷","未出荷")) |
[ShipDate] が現在日より前の場合は、"出荷済み" を返します。 それ以外の場合で、[ShipDate] が現在日と等しい場合は、"本日出荷" を返します。 それ以外の場合は、"未出荷" を返します。 |
=IIf([PurchaseDate]<#1/1/2008#,"古い","新しい") |
[PurchaseDate] が 2008 年 1 月 20 日より前の場合は、"古い" を返します。 それ以外の場合は、"新しい" を返します。 |
=IIf(Eval([Volts] Between 12 And 15 And [Amps] Between 0.25 And 0.3),"OK","要調整") |
[Volts] が 12 ~ 15 の範囲内で、[Amps] が 0.25 ~ 0.3 の範囲内の場合は、"OK" を返します。 それ以外の場合は、"要調整" を返します。 |
=IIf(Eval([CountryRegion] In ("カナダ","米国","メキシコ")),"北米","その他") |
[CountryRegion] が "カナダ"、"米国"、または "メキシコ" の場合は、"北米" を返します。 それ以外の場合は、"その他" を返します。 |
=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(),"出荷済み",IIf([ShipDate]=Date(),"本日出荷","未出荷"))