Application.Nz メソッド (Access)
バリアント型 (Variant) が Null の場合は、Nz 関数を使用して、0 (0)、長さ 0 の文字列 ("")、または別の指定した値を返します。 つまり、この関数を使って Null 値を別の値に変換することにより、式全体の結果が Null 値になるのを防ぐことができます。
構文
式。Nz (Value, ValueIfNull)
expressionApplication オブジェクトを 表す変数。
パラメーター
名前 | 必須 / オプション | データ型 | 説明 |
---|---|---|---|
値 | 必須 | バリアント型 | データ型がバリアント型 ( Variant ) の変数を指定します。 |
ValueIfNull | 省略可能 | バリアント型 (Variant) | 省略可能。 引数 variant が Null 値の場合に返される値を指定するバリアント型 (Variant) の値です。 この引数を使用して、ゼロ以外の値または長さ 0 の文字列以外の値を返すことができます。 注: ValueIfNull 引数を使用せずにクエリの式で Nz 関数を使用する場合、結果は Null 値を含むフィールドの長さ 0 の文字列になります。 |
戻り値
バリアント型
解説
バリアント 引数 Value がNull の場合、 Nz 関数は割り当てられていない バリアント型 (Empty) の特殊な値を返 します。 VBA では、評価時に、Value が数値であるか文字列であるかをコンテキストが示しているかどうかに応じて、数値が 0 または長さ 0 の文字列になります。 以下に例を示します。
Nz(Null) + 2 ' returns 2
Nz(Null) & 2 ' returns "2"
Nz(Null) + "2" ' returns "2"
Nz(Null) & "2" ' returns "2"
クエリ式で使用すると、 Nz は同様の結果値を返します。
省略可能な ValueIfNull 引数が含まれている場合、バリアント型引数が Null の場合、 Nz 関数はその引数で指定された値を返 します。
Variant の値が Null でない場合、Nz 関数はバリアント型 (Variant) の値を返します。
Nz 関数は、Null 値を含む式で使用すると便利です。 式に Null 値が含まれている場合でも、Null 値以外の値に式を評価するには、Nz 関数を使用して、0、長さ 0 の文字列、または他の戻り値を取得します。
たとえば、VariantvarX
が Null の場合、式2 + varX
は常に Null 値を返します。 しかし、 2 + Nz(varX)
では 2 を返します。
多くの場合、IIf 関数の代わりに Nz 関数を使用できます。 たとえば、次のコードでは、目的の結果を得るために、 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 の値を指定した場合、 Value がNull の場合、その値が返されます。 この省略可能な引数を指定することによって、 IIf 関数を含む式を使わずに済む場合があります。 次の式は、変数 が varFreight
値のときに "配送料無料" という文字列を返すという処理を、 IIf 関数を使って実装する場合の例です。
varResult = IIf(IsNull(varFreight), "No Freight Charge", varFreight)
次の例では、 Nz 関数に指定された省略可能な引数は、Null の場合 varFreight
に返される文字列を提供 します。
varResult = Nz(varFreight, "No Freight Charge")
例
次の例では、フォームのコントロールを評価し、そのコントロール値を基に 2 つの文字列のどちらかを返します。 コントロールの値が Null の場合、プロシージャは IsNull 関数を使用してメッセージを選択し、次に Nz 関数を使用して Null 値をメッセージに置き換えます。
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 using IsNull.
varResult = IIf(IsNull(ctl.Value), _
"No value.", "Value is " & ctl.Value & ".")
' Display result using IsNull.
MsgBox varResult, vbExclamation, "Using IsNull"
' Choose result based on value of control using Nz.
' "Value is" + Str(Null) evaluates to Null.
varResult = Nz("Value is" + Str(ctl.Value), "No value") & ".")
' Display result using Nz.
MsgBox varResult, vbExclamation, "Using Nz"
End Sub
サポートとフィードバック
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。