PR

Access VBA逆引き集|Nz関数を使いこなしてNullエラーを防ぐ実践テクニックとCopilot活用術

VBA

Access VBAを開発していると、

  • 入力されていないデータでエラーになる
  • 比較処理で突然エラーが発生する
  • 計算結果が空になる
  • CSV取込後の集計で不具合が発生する
  • DLookupで取得した値がNullになる

といった問題によく遭遇します。

Access VBA開発においてNz関数は必須レベルの関数です。

実際に運用開始後の障害原因を調べると、多くのケースでNull未対策が原因になっています。ベテラン開発者ほどNz関数を日常的に利用しています。 [latest-inf…system.com]


スポンサーリンク

Nz関数とは

Nz関数は

Null

指定した値へ変換

する関数です。


基本構文

Nz(値, 変換値)

Nz(Me!数量, 0)

結果

Null → 0

10 → 10


なぜNullが危険なのか

Accessでは未入力データはNullになります。

例えば

If Me!数量 > 0 Then

数量がNullの場合

実行時エラー

となることがあります。


逆引き① Nullなら0にしたい

最も利用頻度が高いパターンです。

lngQty = Nz(Me!数量, 0)

結果

Null → 0


逆引き② Nullなら空文字にしたい

文字列処理です。

strName = Nz(Me!顧客名, "")

結果

Null → “”


逆引き③ 比較処理でエラーを防ぎたい

悪い例です。

If Me!金額 > 1000 Then

良い例です。

If Nz(Me!金額, 0) > 1000 Then

逆引き④ 計算処理で利用したい

金額計算です。

lngTotal = Nz(Me!売上, 0) + Nz(Me!送料, 0)

結果

売上 Null

送料 100

結果 100


逆引き⑤ DLookup結果を安全に取得したい

実務では非常によくあります。

strName = Nz(DLookup( "顧客名", "T_CUSTOMER", "顧客コード='C001'"), "")

効果

データなし

空文字取得


逆引き⑥ 日付項目を確認したい

日付判定です。

If Nz(Me!実施日, "") = "" Then

MsgBox "未入力です"

End If

Nullと空文字の違い

初心者がよく混同します。

Null

値が存在しない


空文字

“”

値は存在します。

意味が異なります。


IsNullとの違い

比較されることが多い関数です。


IsNull

If IsNull(Me!数量) Then

判定専用です。


Nz

Nz(Me!数量, 0)

変換できます。


使い分け

判定だけ

IsNull

処理続行

Nz

がおすすめです。


実務活用例① CSV取込システム

CSVには空欄が含まれます。

strName = Nz(rs!顧客名, "")

効果

取込エラー防止


実務活用例② 顧客管理システム

電話番号未登録時です。

strTel = Nz(rs!電話番号, "")

未登録でも正常表示できます。


実務活用例③ 売上管理システム

金額集計です。

lngSales = Nz(rs!売上金額, 0)

集計処理

lngTotal = lngTotal + Nz(rs!売上金額, 0)

安定稼働につながります。


実務活用例④ フォーム検索

検索条件です。

If Nz(Me!顧客名, "") <> "" Then

入力有無判定ができます。


実務活用例⑤ ログ出力

ログ保存です。

strLog = Nz(Me!備考, "")

Null対策として有効です。


Nz関数を使わない場合のトラブル

典型例です。

strName = rs!顧客名

顧客名未登録

実行時エラー


対策

strName = Nz(rs!顧客名, "")

ベテラン開発者の定番パターン

レコードセット処理です。

Do Until rs.EOF

 strCode = Nz(rs!顧客コード, "")

 strName = Nz(rs!顧客名, "")

 lngAmount = Nz(rs!金額, 0)

 rs.MoveNext

Loop

開発現場でよく見かける記述です。


Copilot活用術① Null対策レビュー

Copilotに依頼します。

以下のAccess VBAコードについて

Nullエラーになる可能性がある箇所を

指摘してください。


Copilot活用術② Nz追加依頼

以下のVBAコードへ

Nz関数を利用した

Null対策を実装してください。


Copilot活用術③ DLookup改善

DLookup利用コードです。

Null対策を含めて

改善してください。

効率よくコード品質を向上できます。 [latest-inf…system.com], [latest-inf…system.com]


Nz関数利用時の注意点

日付項目

日付には空文字ではなく

Null

チェックを使う場合もあります。


数値項目

基本は

0

を指定します。


文字列項目

基本は

“”

です。


開発現場での利用頻度

個人的な利用頻度です。

順位用途
1位レコードセット取得
2位DLookup結果処理
3位フォーム入力値
4位CSV取込
5位集計処理

Access VBA開発では毎日のように利用します。


Nz関数を覚えるメリット

次の効果があります。

  • エラー削減
  • 保守性向上
  • コード簡略化
  • 運用品質向上
  • 障害対応削減

派手な関数ではありませんが、実務効果は非常に大きいです。


まとめ

Nz関数はAccess VBA開発における必須関数の一つです。

特に

  • CSV取込
  • 顧客管理
  • 売上管理
  • DLookup
  • レコードセット処理

などで大きな効果があります。

またCopilotを活用することで、

  • Null対策レビュー
  • コード改善
  • エラー分析

も効率化できます。

Access VBA初心者の方ほど早い段階でNz関数を習得しておくことをおすすめします。運用開始後のトラブルを大幅に減らせます。

Amazon.co.jp

コメント

タイトルとURLをコピーしました