この記事ではIsNull関数の使い方と注意点について解説します。
他のよく使うVBA関数一覧はこちら。
IsNull関数の使い方と注意点
IsNull関数は、変数や式がNull値(データが存在しない状態)かどうかを判定する関数です。
Nullは「値が存在しない・未定義」であり、特にデータベースのフィールドやVariant型の変数において使われます。
Nullは「値が存在しない」ことを示す特別な値であり、数値計算や文字列連結などで使用するとエラーや意図しない結果を招くことがあります。
そのため、Null値を含む変数を扱う場合は、事前にIsNull
関数でチェックすることが重要です。
構文
IsNull(式)
- 式 : 判定したい変数や値(主にVariant型)
-
戻り値 : 引数がNullの場合は
True
、それ以外はFalse
使用例
Nullかどうかチェックする
Sub Sample()
Dim var As Variant
var = Null
Debug.Print "var : " & IsNull(var)
End Sub
▶ 出力結果
var : True
Nullを含む変数の処理例
Sub Sample()
Dim SampleVal As Variant
SampleVal = Null
CheckNull SampleVal
SampleVal = 123
CheckNull SampleVal
End Sub
Sub CheckNull(val As Variant)
If IsNull(val) Then
Debug.Print "値はNull(未定義)です"
Else
Debug.Print "値はNullではありません: " & val
End If
End Sub
▶ 出力結果
値はNull(未定義)です
値はNullではありません: 123
⚠️注意
Nullは「空文字」や「0」とは異なる
Nullは「値が存在しない」状態を表し、空文字""や数値の0とは別物です。
そのためIsNullはNullだけを判定し、空文字や0に対してはFalseを返します。
Sub Sample()
Dim var1 As Variant
Dim var2 As Variant
Dim var3 As Variant
var1 = Null
var2 = ""
var3 = 0
Debug.Print "var1 : " & IsNull(var1)
Debug.Print "var2 : " & IsNull(var2)
Debug.Print "var3 : " & IsNull(var3)
End Sub
▶ 出力結果
var1 : True
var2 : False
var3 : False
Null値の代入例
Variant型の変数にNullを代入可能ですが、通常の数値型や文字列型には代入できません。
Sub Sample()
On Error Resume Next
Dim Mystr As String
Dim Myint As Integer
Err.Clear
Mystr = Null
If Err.Number <> 0 Then Debug.Print "Mystr = Null:" & Err.Description
Err.Clear
Myint = Null
If Err.Number <> 0 Then Debug.Print "Myint = Null:" & Err.Description
On Error GoTo 0
End Sub
▶ 出力結果
Mystr = Null:Null の使い方が不正です。
Myint = Null:Null の使い方が不正です。
その他のVBA関数
【Excel VBA】VBAでよく使う関数一覧&基本の使い方