【Access VBA】Null判定の基本|IsNullとNzの使い分け

「Accessでフォームの未入力データを登録させたくない。」
このように思ったことはありませんか?
AccessではIsNull関数やNz関数を使うことでNull判定や対策を簡単に行うことができます。
本記事ではAccess VBAにおけるNull判定の基本、IsNullとNz関数の違いと使い分けについて解説します。
- Nullの基本的な意味
- IsNull関数を使ったNull判定の方法
- Nz関数を使ったNull対策
- IsNullとNzの違いと使い分け
Nullとは?未入力データとして扱われる値
Nullとは「値が存在しない状態」を表す特殊な値です。
VBAでは「何も代入されていない」「値が未確定である」ことを意味します。
Nullと空文字・0の違い
Nullは他の値と区別されるのが特徴です。
- Null:値が存在しない状態
- “”(空文字):長さ0の文字列
- 0:数値としてのゼロ
Debug.Print IsNull("") ' False
Debug.Print IsNull(0) ' False
Debug.Print IsNull(Null) ' Trueこのように見た目が空でもNullになるとは限らない点が重要です。

Null判定をする際に特に気を付けたいポイントですね
Nullが発生するケース
Accessでは以下のような場面でNullが発生します。
- フォームで未入力のままレコードを保存した場合
- クエリの結果が存在しない場合
- 外部データ連携で値が取得できなかった場合
IsNull関数を使ったNull判定方法
IsNull関数はVBAで値がNullかどうかを判定してくれる関数です。
戻り値は「True」または「False」を返します。
基本構文
IsNull(値)- 値がNullの場合 → True
- 値がNull出ない場合 → False
使用例
例えば、テキストボックスが未入力かどうかを判定する場合は以下のように記述します。
If IsNull(Me.氏名) Then
MsgBox "氏名が未入力です"
Exit Sub
End IfIf文と組み合わせることで必須項目チェックを実装できます。
注意点
空文字・0とは別物
Debug.Print IsNull("") ' False
Debug.Print IsNull(0) ' False注意点
- “”(空文字)はNullではない
- 0もNullではない
Nullは比較演算では正しく判定できない
If Null = Null Thenこのような比較は正しく機能しません。
Null判定を行う場合は必ずIsNull関数を使用する必要があります。
Nz関数とは?Nullを別の値に変換する関数
Nz関数はVBAでNullを別の値に置き換えるための関数です。
Nullのままだと計算や処理でエラーになることがあるため、それを防ぐ目的でよく使われます。
基本構文
Nz(値, 代替値)- 値:Null判定したい対象
- 代替値:Nullだった場合に返す値
使用例
例えば、未入力の金額を0として扱いたい場合は以下のように記述します。
Dim price As Long
price = Nz(Me.金額, 0)金額が未入力(Null)の場合でも0として扱われます。
そのため、その後の計算処理でもエラーにならず正しく動作します。
IsNullとNzの使い分け
IsNull関数とNz関数はどちらもNullに関係する関数ですが、役割が異なります。
簡単に言うと以下の違いがあります。
| 目的 | 使用関数 |
|---|---|
| Nullかどうか判定する | IsNull |
| Nullを別の値に変換する | Nz |
使い分けの基準
Nullかどうかを判定したい場合
Nullかどうかを調べたいだけならIsNullを使用します。
If IsNull(Me.氏名) Then
MsgBox "未入力です"
End IfNullをエラーにしたくない場合
Nullだった場合は別の値に直したいならNzを使用します。
price = Nz(Me.金額, 0)まとめ
今回はAccess VBAにおけるNull判定の基本、IsNullとNz関数の違いと使い分けについて解説しました。
Nullを正しく扱うことで型不一致エラーや未入力による不具合を防ぐことができます。
- IsNull:Nullかどうかを判定する
- Nz:Nullを別の値に変換する
空文字(””)や0とは異なる値である点に注意しながら用途に応じて適切に使い分けることが重要です。
コメント