VBAでデータ処理をしていると、次のようなことはありませんか?
- Null値を判定したい
- データベース連携で値が取得できない
- Emptyや””との違いが分からない
このような場合は、IsNull関数を使うことで解決できます。
「値が存在しない(Null)」状態を判定できる関数です。
この記事では、IsNullの基本から実務での使い方、IsEmptyとの違いまで分かりやすく解説します。
この記事でできること
- Null値の判定ができる
- IsEmptyとの違いが分かる
- データ処理での安全なコードが書ける
基本:IsNull関数の使い方
基本構文はこちらです。
IsNull(値)
例:
MsgBox IsNull(Null)
→ True
戻り値の意味
| 結果 | 意味 |
|---|---|
| True | Null(値が存在しない) |
| False | 値がある |
基本例:Nullチェック
Option Explicit
Sub CheckNull()
Dim val As Variant
val = Null
If IsNull(val) Then
MsgBox "Nullです"
Else
MsgBox "値があります"
End If
End Sub
Nullとは?(重要)
Nullは「値が存在しない状態」を意味します。
よくある誤解:
- “”(空文字)とは違う
- 0とも違う
- Emptyとも違う
IsNullとIsEmptyの違い
| 関数 | 判定内容 |
|---|---|
| IsNull | Null(値が存在しない) |
| IsEmpty | 未初期化 |
比較例
Dim val As Variant
val = Null
MsgBox IsNull(val) ' True
val = ""
MsgBox IsNull(val) ' False
Nullが発生するケース
- データベース(Access・SQL)
- ADO/DAO処理
- 外部データ取得
通常のExcel処理ではあまり出ませんが、外部連携で重要です。
Nullを安全に扱う方法
Nullのまま処理するとエラーになります。
Dim val As Variant
val = Null
If Not IsNull(val) Then
MsgBox val
Else
MsgBox "Nullのため処理スキップ"
End If
Nz関数の代替(Null→値変換)
VBAにはNz関数がないため、自作で対応します。
Function Nz(val As Variant, Optional defaultVal As Variant = 0)
If IsNull(val) Then
Nz = defaultVal
Else
Nz = val
End If
End Function
使用例:
MsgBox Nz(Null, 0)
実務での活用例
- データベース値のチェック
- NULL回避処理
- データクレンジング
- エラー防止
DB連携では必須の知識です。
よくあるエラーと対処法
① Nullで計算するとエラーになる
事前にIsNullでチェックしてください。
② 空文字と混同する
“”とNullは別物です。
③ IsEmptyと間違える
用途が違うため使い分けが必要です。
④ コードは正しいのにエラーになる
コピー時に全角文字や特殊文字が混ざることがあります。
その場合は該当行を手入力し直すと解決することがあります。
まとめ
- IsNullはNull値を判定する関数
- Emptyや空文字とは別物
- DB連携では必須
- エラー防止に重要
IsNullを理解すると、データ処理の安全性が大きく向上します。
特にデータベース連携では必須の知識なので、しっかり覚えておきましょう。


コメント