文本框null问题

时间:2011-04-14 11:50:33

标签: ms-access vba access-vba

我的Access表单上有一个文本框和一个按钮。在按钮的单击事件中,我想查看文本框是否为空,如果是,则不会执行任何操作。 所以我用

If Me.textbox.Value = Null Then
    Exit Sub
End if

但它不起作用...我在执行窗口中检查了textbox.value并且它是Null,但if子句不起作用......为什么?

编辑:@Dimse,我试过“”,不起作用。而且textbox.text = Null,它弹出一个错误告诉我文本框没有活动..很奇怪。

9 个答案:

答案 0 :(得分:52)

Null永远不会等于任何东西,甚至不是Null。使用IsNull()功能。

If IsNull(Me.textbox.Value) Then

如果你希望Me.textbox在包含空字符串时处理相同的内容,就像它为空时一样,将空字符串连接到它并检查组合字符串的长度:

If Len(Me.textbox.Value & "") = 0 Then

对于空字符串,您还可以使用命名常量vbNullString而不是字符串文字""

If Len(Me.textbox.Value & vbNullString) = 0 Then

使用字符串文字要求VBA每次都从头开始构造该字符串。使用命名常量,VBA只需要引用它,因此应该更快并使用更少的内存。然而,在许多(可能是大多数)情况下,vbNullString的性能优势会非常小,以至于您不会注意到差异。另请参阅comment below中的David-W-Fenton

对我来说,使用vbNullString的更有说服力的理由是,它可以让我的老眼睛立刻识别出来。相反,使用字符串文字,我需要(一点点)更长时间来确认""实际上不是其他内容......如" ""'"。 IMO vbNullString的唯一缺点是需要比""更多的输入。

最后,虽然你实际上并不需要显式引用Value属性(因为它是文本框的默认属性),但我把它留在了,因为你有这种方式,因为我更喜欢明确Value。 : - )

答案 1 :(得分:3)

我也为唤醒死者而道歉,但我想知道没有人考虑使用Nz功能(见@MSDN),在VBA中非常流行,也可用于Access / SQL,在我看来,这是表达式中可空值的更方便,简洁和强大的解决方案。

答案 2 :(得分:2)

如果我正在唤醒死者,我道歉,但为了完整起见,我将为how to test for spaces (visibly 'blank/empty') as well提供代码:

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的

答案 3 :(得分:1)

像这样扩展您的子:

If is null(Me.textbox.Value) Or (Me.textbox.Value = "") Then
    Exit Sub
End if

答案 4 :(得分:1)

Null不等于另一个Null;)

尝试If isNull(Me.textbox.Value)然后

答案 5 :(得分:0)

我认为您可能需要检查“”,空字符串,而不是Null。

答案 6 :(得分:0)

我无法使用它,因为我正在使用KeyUP事件。相反,这对我有用。

If(Textbox.Text = '') 
  ...

由于Textbox.Value仅更新了更改事件,因此它没有在keyup上更新,因此Textbox.Text是当前框中的内容。

摘要:或者,使用.Text属性

答案 7 :(得分:0)

只需使用第二个标准,即可使用!!
在这种情况下,只是一个简单的词,如“检查”。

If Forms![Basic]![Table.Item] & "check" = "check" Then

MsgBox "Field Empty"

Else

MsgBox "Field Not Empty"

End If

答案 8 :(得分:0)

我在某处看到了这个,想分享一下:

If Len(Trim(Me.txtBox.Value)) > 0 Then