【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 If

If文と組み合わせることで必須項目チェックを実装できます。

注意点

空文字・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 If

Nullをエラーにしたくない場合

Nullだった場合は別の値に直したいならNzを使用します。

price = Nz(Me.金額, 0)

まとめ

今回はAccess VBAにおけるNull判定の基本、IsNullとNz関数の違いと使い分けについて解説しました。

Nullを正しく扱うことで型不一致エラーや未入力による不具合を防ぐことができます。

  • IsNull:Nullかどうかを判定する
  • Nz:Nullを別の値に変換する

空文字(””)や0とは異なる値である点に注意しながら用途に応じて適切に使い分けることが重要です。

コメント

コメントする

コメントは日本語で入力してください。(スパム対策)

CAPTCHA

目次