式の評価によって、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 の両方を評価しますが、返されるのはそのうちの 1 つだけです。 このため、好ましくない副次的影響に注意する必要があります。 たとえば、 falsepart を評価すると、0 除算エラーが発生する場合、 expr が True の場合でもエラーが発生 します。
例
フォームまたはレポートで IIf を使う CountryRegion フィールドを含む Customers テーブルがあるとします。 フォーム内で、連絡先の第一言語がイタリア語であるかどうかを示す必要があります。 コントロールを追加し、[コントロールソース] プロパティで次のように IIf を使うことができます。
=IIf([CountryRegion]="イタリア", "イタリア語", "他の言語")
フォーム ビューでフォームを開いたときに、CountryRegion の値がイタリアの場合は、コントロールに "イタリア語" が表示され、その他の値の場合は、"他の言語" が表示されます。
複雑な式で IIf を使う IIf ステートメントの一部として式を使うことができます。 IIf 式を "ネスト" して、一連の従属式を評価することもできます。 上記の例を続ける場合は、複数のさまざまな CountryRegion 値をテストして、存在する値に応じて適切な言語を表示することができます。
=IIf([CountryRegion]="イタリア", "イタリア語", IIf([CountryRegion]="フランス", "フランス語", IIf([CountryRegion]="ドイツ", "ドイツ語", "他の言語")))
テキスト "その他の言語" は、最も内側の IIf 関数の falsepart 引数です。 入れ子になった各 IIf 関数は、それを含む IIf 関数の falsepart 引数であるため、すべての IIf 関数のすべての expr 引数が False と評価された場合にのみ、テキスト "その他の言語" が返されます。
もう 1 つの例として、図書館で勤務している場合を考えてみましょう。 図書館データベースには Check Outs テーブルがあり、その中の Due Date フィールドには特定の本の返却日が含まれています。 コントロールのコントロールの [コントロール ソース] プロパティの IIf 関数を使用して、チェックアウトした項目の状態を示すフォームを作成できます。
=IIf([Due Date]<Date(),"OVERDUE",IIf([Due Date]=Date(),"Due today","Not Yet Due"))
フォーム ビューでフォームを開くと、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(),"Shipped",IIf([ShipDate]=Date(),"Shipping today","Unshipped"))
結果:
[ShipDate] が現在日より前の場合は、"出荷済み" を返します。 それ以外の場合で、[ShipDate] が現在日と等しい場合は、"本日出荷" を返します。 それ以外の場合は、"未出荷" を返します。
式:
=IIf([PurchaseDate]<#1/1/2008#,"Old","New")
結果:
[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(),"Shipped",IIf([ShipDate]=Date(),"Shipping today","Unshipped"))