Accessフォームにテキストボックスとボタンがあります。ボタンのクリックイベントで、テキストボックスが空かどうかを確認します。空の場合、何も実行されません。だから私は使う
If Me.textbox.Value = Null Then
Exit Sub
End if
しかし、動作しません...実行ウィンドウでtextbox.valueをチェックしましたが、それはNullですが、if句が動作しません...なぜですか?
編集:@Dimse、「」を試しましたが、動作しません。また、textbox.text = Null、テキストボックスがアクティブではないことを知らせるエラーをポップします。非常に奇妙です。
Nullは、Nullであっても、決して等しくなりません。 IsNull()
関数を使用します。
If IsNull(Me.textbox.Value) Then
Me.textbox
に空の文字列が含まれている場合とNullの場合とで同じように処理する場合は、空の文字列を連結し、結合された文字列の長さを確認します。
If Len(Me.textbox.Value & "") = 0 Then
空の文字列には、文字列リテラル""
の代わりに、名前付き定数vbNullString
を使用することもできます。
If Len(Me.textbox.Value & vbNullString) = 0 Then
文字列リテラルを使用するには、VBAが毎回その文字列をゼロから構築する必要があります。名前付き定数を使用すると、VBAはそれを参照するだけでよいため、より高速で、より少ないメモリを使用する必要があります。ただし、多くの場合(おそらくほとんどの場合)、vbNullString
を使用した場合のパフォーマンス上の利点は非常に小さいため、違いに気付かないでしょう。 David-W-Fenton から 以下のコメント も参照してください。
私にとって、vbNullString
を使用するより説得力のある理由は、それが私の老齢の目ですぐに認識できることです。逆に、文字列リテラルでは、""
が実際に他のものではないことを確認するのに(ほんの少し)時間がかかります... " "
や"'"
など。 IMOのvbNullString
の唯一の欠点は、""
よりも多くの入力が必要なことです。
最後に、実際にValue
プロパティを明示的に参照する必要はありませんが(テキストボックスのデフォルトプロパティなので)、そのままにしておいたので、明示的にしたいので、そのままにしておきました。 Value
もあります。 :-)
私は死者を目覚めさせたことについても謝罪しますが、VBAで非常に人気があり、使用可能なNz
Function(それを参照してください @ MSDN ) Access/SQLおよび私の意見では、式のnull値を許容するより便利で簡潔で強力なソリューションです。
死者を目覚めさせてしまったことをおaびしますが、完全を期すために スペースのテスト方法(同様に '空/空'も)をテストする方法 :を提供します。
If IsNull(Me.Textbox) Or Trim(Me.Textbox) = vbNullString Then
If Trim(Me.Textbox & vbNullString) = vbNullString Then 'Shorter version
If Len(Trim(Me.Textbox) & vbNullString) = 0 Then 'Shortest version
スペース、空/ ZLS、およびNULLの処理方法を探してここに来ました
サブを次のように展開します。
If is null(Me.textbox.Value) Or (Me.textbox.Value = "") Then
Exit Sub
End if
Nullは別のNullと等しくありません;)
isNull(Me.textbox.Value)の場合If try
Nullではなく、空の文字列 ""をチェックする必要があると思います。
2番目の基準を使用するだけで、うまくいきます!!
この場合、「チェック」のような単純な単語です。
If Forms![Basic]![Table.Item] & "check" = "check" Then
MsgBox "Field Empty"
Else
MsgBox "Field Not Empty"
End If
KeyUPイベントを使用していたため、これを機能させることができませんでした。だから代わりに、これは私のために働いたものです。
If(Textbox.Text = '')
...
Textbox.Valueは変更イベントでのみ更新されるため、キーアップでは更新されなかったため、Textbox.Textは現在ボックスにあるものです。
概要:または、.Textプロパティを使用します