【VBA】Nz関数の使い方|NULLを「0」に変換してエラー回避!

Access VBAでアプリケーションやデータ処理を組んでいると、SQLクエリの結果にNULL(ヌル)が含まれていて思わぬエラーになるというケースに出くわすことがあります。
たとえば、NULLの値をそのまま計算に使ってしまい、「合計が計算できない」「データ型の不一致」などのトラブルが発生することも…。

そんなときに非常に便利なのが、Access VBAでよく使われる「Nz関数」です。
この関数を使えば、NULLを「0」や任意の値に置き換えることができ、エラーを未然に防いだり、処理をスムーズに進めたりできます。
この記事では、Nz関数の基本的な使い方から、実際のSQLクエリやコードの中での活用法、注意すべきポイントまで、初心者にもわかりやすく丁寧に解説していきます。


Nz関数とは?

Nz関数は、値がNULL(空)かどうかをチェックして、代わりの値を返す関数です。

基本の書き方:

Nz(値, 代わりの値)
  • … チェックしたい変数やフィールド
  • 代わりの値 … NULLだったときに返す値

例:NULLを「0」に変えたい場合

Nz(変数名, 0)

これで、もし変数名がNULLだった場合でも「0」が返ってくるので、計算エラーを防げます。

例:NULLを「0」以外の値に変えたい場合

Nz(変数名, "データなし")

Nz関数の代替値には、数値だけでなく文字列なども指定できます
上記の例では、変数がNULLの場合に「データなし」という文字列が返ってくるため、空欄やエラーを回避しつつ、ユーザーにもわかりやすい表示が可能になります。


「Nz(変数名)」だけでもOK?

実は、Nz関数は代わりの値を省略しても使えます

Nz(変数名)

ただしこの場合、NULLだったときに何が返るかは状況次第で変わるため、基本的には「, 0」などの明示的な代替値を指定する方が安心です。


型に注意しよう!

Nz関数の戻り値と、代入先の変数の型が合っていないと、エラーになります。

❌ 例:型が合っていないパターン

Dim num As Integer
num = Nz(Null, "空です")  ' ← "空です" は文字列なので、Integer型には入らない!

この場合は「0」など数値を指定する必要があります。


SQLでもNz関数は大活躍!

SQLの集計や抽出の中で、NULLが含まれると「合計が計算できない」などのトラブルが起こります。

✅ 例:クエリ内でNzを使う

SELECT Nz([価格], 0) + Nz([送料], 0) AS 合計金額 FROM 注文テーブル;

これで、価格や送料がNULLだった場合でも「0」として扱われ、計算が正しく行われます。


📝 まとめ

  • Nz関数は、NULL対策として非常に便利
  • 第二引数(代替値)をしっかり指定するのがポイント
  • 型の不一致には要注意!
  • SQLの中でも活用可能!

もし「NULLによる加算エラー」で困っていたら、まずはNz関数を使ってみましょう。業務のミスやトラブルがぐっと減るはずです!