hiroton
2024/02/19 (月) 16:05:18
bec36@f966d
NULL
は比較演算子による演算ができません
詳しいことはかなり複雑なので、一通り情報に目を通してみてください
https://www.google.com/search?q=VBA NULL 比較
本来、Null
の可能性がある場合の比較は、特別な処理・特別な判定をする必要がありますが、「VBAにおいてはNull
を比較演算に使うと全てFalse
として扱われる」という特徴があります。(コードの実装としてこれを活かすのは本来よろしくありません)
つまり、
Me.[cb1].Value <> Null
とすると、コンボボックスの値に関わらず常にFalse
の処理が為されるため、意図しない動作をします
逆に、<>""
の判定においてコンボボックスの値がNull
の場合は
Null <> "" '//本来やってはいけない演算
False
を返して欲しいときにはFalse
だった場合の処理がされるので表面上は問題なく動作しているというわけです
今回のような場合であれば、コンボボックスの値をチェックしてNull
比較をしないようにするのが正解で、事前にコンボボックスの値をチェックしてコンボボックスの値がNull
だったら""
とみなすようにします。たとえばNz関数を使って
Nz(Me.[cb1].Value, "") <> ""
蛇足
Null
なら空文字とみなしたいなら「"" & Me!cb1 <> ""
」くらいの手抜きで済ませちゃうんですけどね
通報 ...