即効テクニック |
バリアント型(Variant)の変数がNull値である場合、0、長さ0の文字列("")、または別の特定の値を返すようにするために、Nz関数を使用する方法があります。 たとえば、Nz関数を使用して、Null値を別の値に変換し、式がNull値に評価されないようにします。 構文は次のとおりです。 <構文> Nz(variant[, valueifnull]) 引数 内容 variant データ型がバリアント型の変数を指定します。 valueifnull 省略可能(クエリで使用される場合を除きます)。引数Variantの値が Nullのときに、値を返す変数です。この引数を指定すると、0または長さ0の文字列以外の値が返されます。 引数variantの値がNull値の場合、Nz関数は、コンテキストによって値が数値か文字列かを判断し、数値の0または長さ0の文字列(クエリの式で使用すると、常に長さ0の文字列を返します)を返します。 引数variantの値がNull値でない場合は、引数variantの値が返されます。 省略可能な引数valueifnullを指定した場合で、variantがNull値の場合は、この引数で指定した値が返されます。クエリの式で使用する場合、Nz関数は引数valueifnullを指定する必要があります。引数valueIfNullを使わずにクエリの式でNz関数を使用すると、フィールドがNull値を含む長さ0の文字列になります。 Nz関数は、Null値を含む式で使用すると便利です。式にNull値が含まれている場合でも、Null値以外の値に式を評価するには、Nz関数を使用して、0、長さ0の文字列、または他の戻り値を取得します。 たとえば、次のサンプルプロシージャ「Sample1」のようにバリアント型の変数varXが Nullの場合、エラーが発生します。 Sub Sample1() Dim varX As Variant varX = Null MsgBox 2 + varX End Sub しかし、次のサンプルプロシージャ「Sample2」のようにNz関数を使用すると、メッセージボックスには「2」が表示されます。 Sub Sample2() Dim varX As Variant varX = Null MsgBox 2 + Nz(varX) End Sub Nz関数を、IIf関数の代わりに使用できる場合があります。たとえば、次のコードでは目的の結果を得るためにIIf関数を含む2つの式が必要です。 (1)の式は、変数の値をチェックし、Null値の場合は0に変換します。 Sub Sample1() Dim myData As Variant Dim myAns As Variant myData = Null myAns = IIf(IsNull(myData), 0, myData) ←(1) MsgBox IIf(myAns > 50, "High", "Low") ←(2) End Sub 次の例では、Nz関数は最初の式を代替します。これによって、目的の結果を2ステップでなく1ステップで得ることができます。 Sub Sample2() Dim myData As Variant myData = Null MsgBox IIf(Nz(myData) > 50, "High", "Low") ←(1) End Sub 省略可能な引数valueifnullに値を指定すると、variantがNull値の場合、その値が返されます。 Nz関数の引数valueifnullを指定して、IIf関数の代わりに使用できる場合があります。たとえば、次の例では、IIf関数によって変数myDataの値がNull値の場合、"Nullです"とメッセージボックスに表示されます。 Sub Sample1() Dim myData As Variant myData = Null MsgBox IIf(IsNull(myData), "Nullです", myData) End Sub 次の例では、変数myDataがNull値の場合は、Nz関数の引数valueifnullに指定した"Nullです"とメッセージボックスに表示されます。 Sub Sample2() Dim myData As Variant myData = Null MsgBox Nz(myData, "Nullです") End Sub