更新日:、 作成日:
VBA IsNull 関数:Null かどうかを判定する
はじめに
Excel VBA マクロの IsNull 関数から Null かどうかを判定する方法を紹介します。
IsNull 関数は、指定した値が Null かどうかを判定します。
Null なら True を返します。
データベースなどから取得した値が Null かどうかの判定に使用します。
IsNull 関数の引数と戻り値
IsNull(値)
値が Null のときは True を返します。それ以外のときは False を返します。
引数「値」 | 判定したい値を指定します。 |
戻り値の型 | ブール型 (Boolean) |
解説
Null とは、有効な値が含まれていないこと表します。主にデータベースから取得した値が空のときに設定されます。
引数「値」が Null なら True を返します。それ以外の値なら False を返します。
引数「値」が空文字や Empty、Nothing、vbNull、vbNullChar、vbNullString なら False を返します。
関数の引数に Null を渡すと「エラー 94 Null の使い方が不正です。」が発生するものがあります。Null を数値や文字列に置換するとエラーの発生を防げます。
Null の比較
Null + 1 のように、式の中に Null が含まれていると、結果も Null になります。If 文なら必ず Else の処理になります。
関数の引数に Null を渡すと、結果を Null で返すものもあります。
使用例
IsNull 関数の使用例を紹介します。
Null か判定する
Null かどうかを判定します。
Dim v As Variant
Dim b As Boolean
b = IsNull(v) ' Variant 型の初期値は Empty
Debug.Print(b) ' False
v = Null
b = IsNull(v)
Debug.Print(b) ' True
v = vbNullString
b = IsNull(v)
Debug.Print(b) ' False
Set v = Nothing
b = IsNull(v)
Debug.Print(b) ' False
Dim i As Integer
b = IsNull(i)
Debug.Print(b) ' False
Dim s As String
b = IsNull(s)
Debug.Print(b) ' False
Null と比較する
Null と比較した結果はすべて Null になります。
Dim v As Variant
Dim b As Variant
v = Null
b = IsNull(v)
Debug.Print(b) ' True
b = (v = 0)
Debug.Print(b) ' Null
b = v + 1
Debug.Print(b) ' Null
b = v & "A"
Debug.Print(b) ' "A"
b = (v = False)
Debug.Print(b) ' Null
If v = Null Then ' 結果が Null になるので Else の処理になる
Debug.Print("True")
Else
Debug.Print("False") ' False
End If
Null を置換する
Null を置換して、複雑な Null 判定をしなくてよくなります。
Dim v As Variant
v = Null ' データベースから値を取得する処理
' i = Len(v) ' Null が入っているとエラーになる
If IsNull(v) Then
v = 0 ' 数値なら 0 にする
v = "" ' 文字列なら空文字にする
End If
Dim l As Long
l = Len(v) ' Null を置換しているので正常に処理できる
スポンサーリンク