7

そのため、解決できないように見えるイライラするほど単純な問題があります。

If Me.Bank_Credit.Value = Null Then
Me.Bank_Credit.Value = 0
End If

基本的に、ユーザーがデータを入力してからボタンを押すバインドされていないボックスがあります。確認ボックスで YES を選択すると、バインドされていないボックスのデータがバインドされたボックスにコピーされます。ただし、ユーザーが何も入力しないと、空のバインドされたフィールドが作成され、後でクエリが大幅に台無しになる可能性があります。

そうは言っても、上記のコードは私にはうまくいきません。たとえば、If Me.Bank_Credit.Value = 1 を設定して実行すると、1 が 2 に変わります。ただし、Null または "" に対しては機能しません。

この問題には簡単な解決策があると確信していますが、それを理解することはできません。

前もって感謝します

4

2 に答える 2

17

Null に等しいものはなく、別の Null でさえありません。Null と等しくないものはなく、別の Null でさえありません。

Bank_Credit Null の場合、次の式は Null を返します...True期待どおりではなく、 False.

Debug.Print (Me.Bank_Credit.Value = Null)

これは、イミディエイト ウィンドウでのこの結果と同じ理由です。

Debug.Print Null = Null
Null

機能を使用してくださいIsNull()

If IsNull(Me.Bank_Credit.Value) Then

また、Nz()ヘルプ トピックを参照して、役立つかどうかを確認してください。あなたはこれを行うことができますが、実際には より改善されていませんIsNull(). しかしNz()、他の VBA コードには非常に便利です。

Me.Bank_Credit = Nz(Me.Bank_Credit, 0)
于 2012-12-13T21:46:00.763 に答える
4

HansUpの答えは正しいですが、基本的に逆参照されたオブジェクトのVBAキーワードである「Nothing」にも同様の構造があることを追加するのは適切だと思いました。次のようなステートメントを使用する必要があります

If myRange is Nothing Then

この種のステートメントは、VBA ヘルプ ファイル全体に見られます (実際には、これに似たキーワードを持つ他の言語にも見られます)。

于 2012-12-14T06:04:28.397 に答える