Nz 関数

バリアントが 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 では variantvarXNull の場合、常に 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 関数に指定されたオプションの引数に、varFreightNull の場合に返される文字列を指定しています。

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

注: 次の例は、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
スキルを磨く
トレーニングの探索
新機能を最初に入手
Office Insider に参加する

この情報は役に立ちましたか?

ご意見をいただきありがとうございます。

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×