バリアント型(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
|