バリアント型 (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 の文字列、またはカスタムの戻り値を返すことができます。
たとえば、VariantvarX が Null の場合、式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 に値を指定すると、variant が Null の場合、この指定した値が返されます。 このオプションの引数を指定することで、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