-
∨目次
- 構文
- 解説
- 使用例
VBA IsNull 関数:Null かどうかを判定する
はじめに
Excel VBA マクロの IsNull 関数から Null かどうかを判定する方法を紹介します。
IsNull 関数は、指定した値が Null かどうかを判定します。
Null なら True を返します。
データベースなどから取得した値が Null かどうかの判定に使用します。
-
目次
- 構文
- 解説
- 使用例
構文
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 で返すものもあります。
使用例
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 を置換しているので正常に処理できる
スポンサーリンク