※ ChatGPTを利用し、要約された質問です(原文:Access VBA での Null と "" )
Access VBAでのNullと""の違い
このQ&Aのポイント
最近新しいPCでAccess VBAのコードを実行すると、Nullが不正となるエラーメッセージが表示されるようになった。以前のPCでは問題なく動作していたため、違いが気になる。
問題のPCと以前のPCの組み合わせを比較すると、OSやOfficeのバージョンに違いがある。また、ネットワーク上の同一ファイルを各PCで開いても、Nullを検出するのは新しいPCのみ。
原因として考えられる要素は、新しいPCのOSやOfficeのバージョンの違い、および違う時期に発生した何らかの変更が考えられる。具体的な原因を特定するためには、PCの設定や変更履歴を確認する必要がある。
以前組んだAccessVBA(ADPファイルにて使用)でのコードの中に、入力値のチェックとして
--------------------------
Dim value as String
If me!TextBoxA = "" then
'ここでテキスト未入力時の処理
Else
’テキストが入力されているのでここで正常な処理
value = me!TextBoxA.value
End If
---------------------------
という記述をしていました。
今でしたら、これに加えてIsNullや他の仕組みを併用するのですが、
今まで上のものでも問題なく使えていました。つまり、
If me!TextBoxA = "" then
だけで、テキストボックスの未入力をきちんと検出していました。
ところが、最近新しいPCを導入したところ、
「Nullが不正です」
のメッセージが出るようになりました。
恐らくIf文で入力値の””が検出されず、Elseの部分で、Valueに代入しようとしたため、「Nullが不正」となったのだと思います。
本来はこちらの方が正しいと思うのですが、わからないのは今までなぜ
Nullが不正とならなかったのか、です。
因みに、問題なく使えていたPCの組み合わせとしては、
・XP(SP3) Office2010Pro(Access2010)
・XP(SP3) Office2002Pro(Access2002) + AccessRuntime2007
・XP(SP3) Officeなし + AccessRuntime2010
・・・など、あらゆる組み合わせで10台ほど、問題なく動いていました。
(OSはすべて32Bit.エデイションはProやHomeなど混在)
そして、問題となったPCは
・XP(SP3)Pro Office2010Pro(Access2010)
です。しかも、購入した直後は問題なかったものの、つい先日急にダメになったとの事でした。
何かきっかけとなった事はなかったか聞いてみましたが、心当たりはないとの事。
また、ネットワーク上にある同一ファイルをそれぞれのPCで個別に開いてみても、
やはり、Nullを検出するのは今回の新しいPCだけです。
何が原因なのかが気になって仕方ありません。
このような違いが起こる要因としてどのようなことが考えられるでしょうか。
お礼
回答をありがとうございました。リンク先で知った「Null 値を含む式はすべて式自体が Null 値となり」という部分は新たな発見でした。