バリアントが Null の場合に、0、長さ 0 の文字列 (" ")、または指定された別の値を返すには、Nz 関数を使うことができます。 たとえば、この関数を使って Null 値を別の値に変換し、式を通じて Null 値が広まらないようにすることができます。
構文
Nz ( variant [, valueifnull ] )
Nz 関数の構文には、次の引数があります。
引数 |
説明 |
variant |
必須。 データ型 Variant の変数です。 |
valueifnull |
オプション (クエリで使用されている場合を除く)。 variant 引数が NULL の場合に返す値を提供する Variant です。 この引数を使用すると、0 または長さが 0 の文字列以外の値を返すことができます。 注: 引数 valueifnull を使用せずに、クエリの式で Nz 関数を使用すると、NULL 値を含むフィールドは長さが 0 の文字列になります。 |
variant 引数の値が Null の場合、Nz 関数は、コンテキストによって値が数値か文字列かを判断し、それによって数値の 0 または長さ 0 の文字列 (クエリの式で使われている場合は、常に長さ 0 の文字列) を返します。 オプションの valueifnull 引数が指定されており、variant 引数が Null である場合、Nz 関数は valueifnull 引数で指定された値を返します。 クエリの式で使う場合、NZ 関数には常に valueifnull 引数を指定する必要があります。
variant の値が Null でない場合、Nz 関数は variant の値を返します。
説明
Null 値が含まれる可能性がある式では、Nz 関数が役立ちます。 Null 値が含まれていても、式によって Null 以外の値が返されるようにするには、Nz 関数を使って、0、長さ 0 の文字列、またはカスタムの戻り値を返すことができます。
たとえば、式 2 + varX では variantvarX が Null の場合、常に Null 値が返されます。 しかし、2 + Nz(varX) では 2 が返されます。
Nz 関数は、IIf 関数の代わりに使えることがよくあります。 たとえば、次のコードでは、目的の結果を返すために、IIf 関数を含む式が 2 つ必要になります。 IIf 関数を含む最初の式を使って変数の値を確認し、それが Null の場合 0 に変換します。
varTemp = IIf(IsNull(varFreight), 0, varFreight)
varResult = IIf(varTemp > 50, "High", "Low")
次の例では、Nz 関数は最初の式と同じ機能を実行しますが、目的の結果を 2 ステップではなく 1 ステップで達成できます。
varResult = IIf(Nz(varFreight) > 50, "High", "Low")
オプションの引数 valueifnull に値を指定すると、variant が Null の場合、この指定した値が返されます。 このオプションの引数を指定することで、IIf 関数を指定する式を使わなくて済みます。 たとえば、次の式では、IIf 関数を使って varFreight の値が Null の場合に文字列を返します。
varResult = IIf(IsNull(varFreight), _
"No Freight Charge", varFreight)
次の例では、Nz 関数に指定されたオプションの引数に、varFreight が Null の場合に返される文字列を指定しています。
varResult = Nz(varFreight, "No Freight Charge")
クエリの例
式 |
結果 |
SELECT ProductID, NZ(Discount,"No Detail Available") AS Expr2 FROM ProductSales; |
列 Expr1 で "ProductID" を返し、フィールド "Discount" の 'Null' 値を評価し、すべての Null 値に対して "詳細なし" を返します (null 以外の値をそのまま返します)。 |
SELECT ProductID, NZ(Discount,"No Detail Available") AS ReplaceNull FROM ProductSales; |
列 Product で "ProductID" を返し、フィールド "Discount" の 'Null' 値を評価し、すべての Null 値に対して "No Details Available" (Null 以外の値をそのまま返す) を返し、列 ReplaceNull に表示します。 |
VBA の例
注: 次の例は、Visual Basic for Applications (VBA) モジュールでのこの関数の使用方法を示しています。 VBA の使用方法の詳細については、[検索] の横にあるドロップダウン リストで [開発者用リファレンス] を選び、検索ボックスに検索する用語を入力します。
次の例では、フォーム上のコントロールが評価され、コントロールの値に基づいて 2 つの文字列のどちらかが返されます。 コントロールの値が Null の場合、Nz 関数により、Null 値は長さ 0 の文字列に変換されます。
Public Sub CheckValue()
Dim frm As Form Dim ctl As Control Dim varResult As Variant ' Return Form object variable ' pointing to Orders form. Set frm = Forms!Orders ' Return Control object variable ' pointing to ShipRegion. Set ctl = frm!ShipRegion ' Choose result based on value of control. varResult = IIf(Nz(ctl.Value) = vbNullString, _ "No value.", "Value is " & ctl.Value & ".") ' Display result. MsgBox varResult, vbExclamation End Sub