更新日:、 作成日:

VBA IsNull 関数:Null かどうかを判定する

はじめに

Excel VBA マクロの IsNull 関数から Null かどうかを判定する方法を紹介します。

IsNull 関数は、指定した値が Null かどうかを判定します。

Null なら True を返します。

データベースなどから取得した値が Null かどうかの判定に使用します。

IsNull 関数の引数と戻り値

IsNull()
が Null のときは True を返します。それ以外のときは False を返します。

引数「値」判定したい値を指定します。
戻り値の型ブール型 (Boolean)

解説

Null とは、有効な値が含まれていないこと表します。主にデータベースから取得した値が空のときに設定されます。

引数「値」が Null なら True を返します。それ以外の値なら False を返します。

引数「値」が空文字や EmptyNothingvbNullvbNullCharvbNullString なら 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 を置換しているので正常に処理できる