
こんばんは!よろしくお願いします。
新規に作成したフォームにコンボボックスを設置して
Sub test1()
If Form_フォーム1.コンボ0.Value = Null Then
Form_フォーム1.コンボ0.Value = ""
End If
MsgBox Form_フォーム1.コンボ0.Value
End Sub
Sub test2()
If IsNull(Form_フォーム1.コンボ0.Value) = True Then
Form_フォーム1.コンボ0.Value = ""
End If
MsgBox Form_フォーム1.コンボ0.Value
End Sub
上記2つのサンプルを実行した時に、
test1のほうだけ
実行時エラー94
Nullの使い方が不正です。
となります。
ウォッチウインドウで見ていくと、
「オブジェクト変数、またはwithブロック変数が設定されていません。」
となりますが
「If Form_フォーム1.コンボ0.Value = Null Then」
を通過したら
Nullになります。
何が起こっているのでしょうか?
No.1ベストアンサー
- 回答日時:
Nullはちょっと特殊な値で、「=」で比較を行うと、数値や文字列とは
異なる結果になります。
つまり、下記のように、Nullを「=」演算子で比較すると、変数の値が
何であっても、評価結果は「Null」になる、という性質を持っています。
(イミディエイト ウィンドウ(Ctrl+Gキーで表示可能)で、コンボボックス
に適当な値を入れて「?IsNull(Form_フォーム1.コンボ0.Value=Null)」
を表示させると、結果を実際に確認できます)
1)変数「a」が「1」(数値)の場合の「If a = 1」:
True(-1)
2)変数「a」が「Test」(文字列)の場合の「If a = "Test"」:
True(-1)
3)変数「a」が「Null」の場合の「If a = Null」:
Null
4)変数「a」が「1」の場合の「If a = Null」:
Null
5)変数「a」が「Test」の場合の「If a = Null」:
Null
※イメージとしては「0には何を掛けても0(3*0=0)」に近いかも?
このため、test1ではIf文の条件が不成立の扱いとなるため、コンボ0への
代入は行われないことになります。
で、MsgBox関数では、第1引数は「文字列式」である必要がありますので、
If文が不成立でコンボ0への「""」の代入が行われていないtest1では
第1引数がNullのままのため、実行時エラーが発生した、ということです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access コンボボックスの値を...
-
アクセスのコンボボックスの重...
-
梶井基次郎の「闇の絵巻」という...
-
もみじの別名は?
-
睡眠時間の乱れ
-
ふしぎ遊戯の鬼宿は美朱の世界...
-
ラテン語で「闇」を意味する単...
-
セレブパーティーに誘われまし...
-
闇バイトの応募はおとり捜査で...
-
転生
-
入り口と出口の間には、何があ...
-
アオミドロに転生したら嫌です...
-
何度か誘っているけど都合が合...
-
セカンドアルバムくらいまでが...
-
21歳の俺が腐敗したジャガイモ...
-
夢十夜 第一夜
-
ファンタジーっぽい2択ゲーム...
-
転生しなずに天国にずっといれ...
-
闇アテナ
-
神の国、しかし複製/創造するし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access コンボボックスの値を...
-
Access 複数条件検索の設定が上...
-
コンボとセットの違い
-
サブフォームにあるコンボボッ...
-
光学式ドライブの交換について...
-
アクセスのコンボボックスの重...
-
コンボボックスでの絞り込み2つ...
-
Access パラメータークエリ VBA...
-
コンボボックスの値が変更され...
-
「コンボ(ドライブ)」の由来、...
-
しょーもない質問ですが…
-
IDEのCD-Rドライブで現...
-
(アクセス)フォームからのメ...
-
アクセス コンボボックス VBA
-
テーブルに追加したデータフォ...
-
PS3バイオハザード6 マーセナリ...
-
VBAで検索した結果をコンボボッ...
-
ControlTypeの切り替えはデザイ...
-
コンボドライブとSuperDrive
-
「コンボ」の意味教えてください
おすすめ情報