Microsoft Office Online
Office Online にサインイン (サインインとは?) | サインイン

 
 
Microsoft Office Access
検索
検索
 
以前のバージョン: (c) Microsoft
以前のバージョンの製品情報
更新プログラムの確認: (c) Microsoft
Office のダウンロード
 
 
 
注意: このページはサポートされていない Web ブラウザで表示されています。この Web サイトは、Microsoft Internet Explorer 6.0 以降、Firefox 1.5、または Netscape Navigator 8.0 以降を使用すると、正しく表示されます。 サポートされているブラウザの詳細情報

印刷用ページの表示印刷用ページの表示 ブックマークを設定して共有共有
Nz 関数
 

Nz 関数を使うと、特定のバリアント型 (Variant) (バリアント型 (Variant) : Deftype ステートメントを記述していない場合に、型宣言文字がない変数に割り当てられる既定のデータ型。バリアント型の変数には、数値、文字列、日付/時刻、Null 値、または Empty 値を格納することができます。) の値が Null (Null : データが存在しないこと、またはデータが不定であることを示すために、フィールドに入力したり式またはクエリで使用する値。Visual Basic の Null キーワードは Null 値を表します。主キー フィールドなど、Null 値を格納できないフィールドもあります。) 値になるときに、Null 値の代わりに、数値の 0、長さ 0 の文字列 (長さ 0 の文字列 : 文字を 1 つも含まない文字列。長さ 0 の文字列を使うと、意図的にフィールドに値がないようにしていることを示すことができます。長さ 0 の文字列を入力するには、スペースを含めずに二重引用符を二度続けて (" ") 入力します。) (" ")、または指定したその他の戻り値が返されるようにすることができます。つまり、この関数を使って Null 値を別の値に変換することにより、式全体の結果が Null 値になるのを防ぐことができます。

構文

Nz(variant [, valueifnull ] )

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

引数 説明
variant 必ず指定します。データ型 (データ型 : 保持できるデータの種類を決定するフィールドの特性。主なデータ型としては、ブール型 (Boolean)、整数型 (Integer)、長整数型 (Long)、通貨型 (Currency)、単精度浮動小数点数型 (Single)、倍精度浮動小数点数型 (Double)、日付型 (Date)、文字列型 (String)、バリアント型 (Variant) (既定値) があります。)がバリアント型 (Variant) の変数を指定します。
valueifnull 省略可能です (クエリで使用される場合を除きます)。引数 variant の値が Null のときに返す値をバリアント型 (Variant) で指定します。この引数は、数値の 0 や長さ 0 の文字列以外の値を返す場合に指定します。

 メモ   クエリ内の式で Nz 関数を使用する場合、引数 valueifnull を指定しないと、Null 値を含むフィールドに長さ 0 の文字列が設定されます。


引数 variant で指定した変数が Null 値になった場合、Nz 関数は、その値が数値か文字列かをコンテキストによって判断し、数値の 0 か、または長さ 0 の文字列を返します (クエリの式で使用すると、常に長さ 0 の文字列が返されます)。 省略可能な引数 valueifnull を指定した場合は、variant で指定した変数が Null 値になると、valueifnull で指定した値が返されます。 クエリの式で使用する場合は、Nz 関数に必ず引数 valueifnull を指定する必要があります。

引数 variant で指定した変数が Null 値でない場合は、その変数の値がそのまま返されます。

解説

Nz 関数は、式の中の変数に Null 値が代入される可能性がある場合に便利です。Nz 関数を使用して、数値の 0、長さ 0 の文字列、またはその他の戻り値を取得することにより、式の中の変数に Null 値が代入された場合でも、その式が Null 値以外の値として評価されるようにすることができます。

たとえば、2 + varX という式は、バリアント型の変数 varXNull の場合、常に Null 値を返します。しかし、2 + Nz(varX) とすると、返される値は 2 になります。

また、Nz 関数は、IIf 関数の代わりに使用できる場合もあります。次に示すコードは、目的の結果を得るために、IIf 関数を含む式を 2 つ使わなければならない場合の例です。1 つ目の式によって、変数の値がチェックされ、Null 値の場合は 0 に変換されるようになっています。

varTemp = IIf(IsNull(varFreight), 0, varFreight)
varResult = IIf(varTemp > 50, "High", "Low")
		

この 1 つ目の式の役割を Nz 関数を使って置き換えれば、式を 2 つに分けることなく、次のように 1 つの式で目的の結果を得ることができます。

varResult = IIf(Nz(varFreight) > 50, "High", "Low")
		

省略可能な引数 valueifnull に値を指定した場合、variantNull 値のときにはその指定値が返されます。この引数を指定することによって IIf 関数を使わずに済む場合もあります。次の式は、変数 varFreightNull 値のときに "配送料無料" という文字列を返すという処理を、IIf 関数を使って実装する場合の例です。

varResult = IIf(IsNull(varFreight), _
    "配送料無料", varFreight)
		

Nz 関数の引数 valueifnull を使えば、varFreightNull 値のときに文字列を返すという処理を次のような式で実装できます。

varResult = Nz(varFreight, "配送料無料")
		

使用例

 メモ   次の例は、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

    ' Orders フォームを示す Form オブジェクト変数を返します。
    Set frm = Forms!Orders

    ' ShipRegion を示す Control オブジェクト変数を返します。
    Set ctl = frm!ShipRegion

    ' コントロールの値を基に結果を選択します。
    varResult = IIf(Nz(ctl.Value) = vbNullString, _
        "No value.", "Value is " & ctl.Value & ".")

    ' 結果を表示します。
    MsgBox varResult, vbExclamation

End Sub
		
広告