我的 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
会非常小,以至于您不会注意到其中的差异。另请参阅下面评论 https://stackoverflow.com/questions/5662751/textbox-null-problem/5663965#comment6529056_5663965 from 大卫-W-芬顿 https://stackoverflow.com/users/9787/david-w-fenton.
对我来说,使用更令人信服的理由vbNullString
是我衰老的眼睛一眼就能认出它。相反,对于字符串文字,我需要(一点点)更长的时间来确认""
实际上不是别的东西......就像" "
or "'"
。唯一的缺点是vbNullString
,IMO,这需要比""
.
最后,尽管您实际上不需要显式引用Value
属性(因为它是文本框的默认属性),我将其保留在其中,因为您已经这样做了,并且因为我更喜欢明确地使用Value
, 也。 :-)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)