以前組んだ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だけです。
何が原因なのかが気になって仕方ありません。
このような違いが起こる要因としてどのようなことが考えられるでしょうか。
No.1ベストアンサー
- 回答日時:
問題の回答は以下のURLに書かれています。
「No909.NullとIsNullの違いとは・・・・?」
http://www.accessclub.jp/bbs5/0004/vba909.html
Null と "" は違う判定結果になります。 もしNULL判定も含むよぅにしたいなら NZ() 関数をお勧めいたします。
もし、何も入力されていないことをチェックするのであれば 以下のようにすればいいでしょう。
IF len(NZ(調べたい値)) = 0 then ' ==> 文字列が長さが0 かつNULLであれば空文字列 "" に変換します。
処理
end if
とすれば完璧です。
参考URL:http://www.accessclub.jp/bbs5/0004/vba909.html
回答をありがとうございました。リンク先で知った「Null 値を含む式はすべて式自体が Null 値となり」という部分は新たな発見でした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Excel(エクセル) VBA 特定の列に入っているテキストをコピペ 2 2023/06/14 11:24
- Visual Basic(VBA) VBAのトグルボタンでのマクロについて質問です 3 2022/10/10 17:23
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データベースのINT型項目にNULL...
-
passwordが入れられません・・・・
-
アクセスで数値型のフィールド...
-
sqlldrの使用方法について
-
日付のテキストボックスに(例...
-
フォームで入力しても反映されない
-
エクセル 自動入力
-
Accessで小数の入力について
-
Access(office)のマクロの「値...
-
ACCESS2000にて「うるう年」の...
-
MA ACCESSデータベースに詳しい...
-
アクセスのテキストボックスの...
-
Accessフォームのコントロール...
-
入力規則違反-任意のエラーメ...
-
このオブジェクトに値を代入す...
-
ファイルメーカー 一ヵ月後の...
-
ファイルメーカー:フィールド...
-
Access2000VBAでEscキーを禁止!
-
Access2007、フォームのテキス...
-
PostgreSQLでのクエリ登録
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
passwordが入れられません・・・・
-
データベースのINT型項目にNULL...
-
アクセスで数値型のフィールド...
-
フォームで入力しても反映されない
-
Access(office)のマクロの「値...
-
Excelで入力したデータを自動的...
-
日付のテキストボックスに(例...
-
Access2007 textboxに入力でき...
-
このオブジェクトに値を代入す...
-
アクセスのテキストボックスの...
-
ファイルメーカー 一ヵ月後の...
-
ユーザーフォームで数字にカン...
-
sqlldrの使用方法について
-
ACCESS 時間の入力方法
-
入力規則違反-任意のエラーメ...
-
Access2007、フォームのテキス...
-
Accessで主キーの最終番号を取...
-
ファイルメーカで経過月数を出...
-
Accessで所要時間の足し算
-
Accessのパラメータクエリに入...
おすすめ情報