Nz 関数

適用先
Access for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

バリアント型 (Variant) が Null の場合は、 Nz 関数を使用して、0、長さ 0 の文字列 (")、または別の指定した値を返すことができます。 たとえば、この関数を使って Null 値を別の値に変換し、式を通じて Null 値が広まらないようにすることができます。

構文

Nz(variant [, valueifnull ] )

Nz 関数の構文には、次の引数があります。

引数 説明
variant 必ず指定します。 データ型 Variant の変数。
valueifnull オプション (クエリで使用されている場合を除く)。 バリアント型引数が Null の場合に返される値を提供するバリアント型 (Variant) です。 この引数を使用すると、0 または長さが 0 の文字列以外の値を返すことができます。
メモ:valueifnull 引数を使用せずにクエリの式で Nz 関数を使用する場合、結果は null 値を含むフィールドの長さ 0 の文字列になります。

バリアント引数の値が Null の場合、Nz 関数は、値が数値または文字列であることを示すかどうかに応じて、数値 0 または長さ 0 の文字列を返します (クエリ式で使用する場合は常に長さ 0 の文字列を返します)。 省略可能な valueifnull 引数が含まれている場合、バリアント型引数が Null の場合、Nz 関数はその引数で指定された値を返します。 クエリ式で使用する場合、 NZ 関数には常に valueifnull 引数を含める必要があります。

variant の値が Null でない場合、Nz 関数は variant の値を返します。

説明

Null 値が含まれる可能性がある式では、Nz 関数が役立ちます。 Null 値が含まれていても、式によって Null 以外の値が返されるようにするには、Nz 関数を使って、0、長さ 0 の文字列、またはカスタムの戻り値を返すことができます。

たとえば、VariantvarXNull の場合、式2 + varXは常に 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 に値を指定すると、variantNull の場合、この指定した値が返されます。 このオプションの引数を指定することで、IIf 関数を指定する式を使わなくて済みます。 たとえば、次の式では 、IIf 関数を使用して、 varFreight の値が Null の場合に文字列を返 します

varResult = IIf(IsNull(varFreight), _
    "No Freight Charge", varFreight)

次の例では、 Nz 関数に指定された省略可能な引数は、 varFreight が Null の場合に返される文字列 を提供します

varResult = Nz(varFreight, "No Freight Charge")

クエリの例

Expression 結果
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