VBA エラー 94「Null の使い方が不正です。」の原因と対処方法

VBAを実行するとVBA エラー 94「Null の使い方が不正です。」を見る機会はありませんか?

コードをみても誤った箇所がわからず途方に暮れる場合もあるかと思います。

そんな中で悩むことは、

・VBA エラー 94「Null の使い方が不正です。」の原因はなに?
・VBA エラー 94「Null の使い方が不正です。」の対処はどうすればよい?

ではないでしょうか?

今回は、
VBA エラー 94「Null の使い方が不正です。」の原因とサクっとできる対処方法について
まとめます!



VBA エラー 94「Null の使い方が不正です。」はどんなエラー?

VBA エラー 94「Null の使い方が不正です。」は、参照元データのデータベースにおいて空(Null)の値をVBAなどで読み込んで、変数に代入するときにNull値があり、その値を文字列に変換できないため発生するエラーです。

タカヒロ
タカヒロ
AccesssとExcelの連携時によく出くわしますね。



VBA エラー 94の原因①「データベース読込の戻り値などでNull値があり変数に格納できない場合に発生」

VBA エラー 94「Nullの使い方が不正です。」は、上記の通りAccesssなどのデータベースにおいて空(Null)の値をVBAなどで読み込んで、変数に代入するときに、Nullを文字列に変換できないため発生するエラーとなります。

VBAプロシージャでNull値を扱う場合は変数の型はVariant型に限られます。

ところが、文字列のString型や数値のInteger型で宣言している場合は型が合いませんのでエラーになるというわけです。

以下、サンプルコードです。

Sub エラーテスト1()

    Dim intNull As Integer
    
    intNull = Null

End Sub

はい、でましたね。

VBA エラー 94の原因①「データベース読込の戻り値などでNull値があり変数に格納できない場合に発生」の対処方法はNull値を回避する

VBA エラー 94の原因①「データベース読込の戻り値などでNull値があり変数に格納できない場合に発生」の対処方法はNull値を回避する処理を加えるようにします。

Null値が入る可能性がある変数をすべてバリアント(Variant)型にする

一番簡単な方法はNull値が入る可能性がある変数をすべてバリアント(Variant)型にしてしまうことです。

バリアント型は整数や文字列、オブジェクトなどなんでもOKの万能な型ですが、

しっかり変数の型を決めたい方はちょっと…

と思う方もいらっしゃるでしょう。

Sub エラーテスト1aR()

    Dim intNull As Variant
    
    intNull = Null

End Sub

タカヒロ
タカヒロ
まあ、小規模、単体で使う分にはバリアント型しまくりでもよいのかと思います。

IsNull関数を使用して、変数にNullが含まれるかチェックし含まれる場合は値を変換する

IsNull関数を使用して、変数にNullが含まれるかチェックし含まれる場合は値を変換をします。

以下サンプルコードです。
Null値を含む一次受けの変数tempはバリアント型にし、Null値判定をし、Null値であれば0、それ以外であればそのまま代入します。

Sub エラーテスト1bR()

    Dim intNull As Integer
    Dim temp As Variant

    temp = Null
    
    If IsNull(temp) Then
        intNull = 0
    Else
        intNull = temp
    End If

End Sub

AccessのIIF関数、ISNULL関数を使ってNullを0か””にする

上記のISNULL関数を使う方法と同じですが、そもそもSQLでデータベースの情報を参照する時点で変換をするという、上流でやっつけてしまう方法です。

Select文などで、
IIF(ISNULL(<フィールド名>), 0, <フィールド名>)
IIF(ISNULL(<フィールド名>), “”, <フィールド名>)
とかにすればOKです。

あとは、外部データそのものにNullがあったら0か””を代入してしまう方法がありますが、

Excelの仕様のために外部データそのものを加工するのはデータ不整合や他の処理でのバグを誘発する可能性がありますので、あまりおすすめはしません。



さいごに

今回は、
VBA エラー 94「Null の使い方が不正です。」の原因とサクっとできる対処方法について
まとめました。

タカヒロ
タカヒロ
データの型は設計前段階で方針としてきめておくことがおすすめです。
スムーズに対応できるし、未然にエラーが防げるからです。

VBAのエラーはパターンを知っておくと発生した時に慌てず対応することができますので、

しっかりと対処方法を把握するようにしておきたいですね!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です