访问 2007 vba 空
Posted
技术标签:
【中文标题】访问 2007 vba 空【英文标题】:Access 2007 vba null 【发布时间】:2011-09-15 23:40:41 【问题描述】:我的程序不会处理超过此语句:
Dim valid as Boolean
If MyComboBox.Value Is Not Null Then valid = true
为什么不呢?
如果我尝试使用停止点单步执行,程序不会继续执行下一步,但表单会继续运行,就好像没有运行任何 vba 代码一样。这很烦人,因为这意味着表单仍然可以使用,就好像没有任何问题但没有发生预期的行为。
【问题讨论】:
欢迎来到 ***。你期望它做什么?Valid
是一个 Boolean
变量,只有在错误的测试满足一个条件时才设置它,然后在发布的代码中对 Valid
不执行任何操作。 (更好的测试应该更像If MyComboBox.Text <> ""
,或者Valid = MyComboBox.Text <> ""
,然后根据Valid
是真还是假来做一些事情。)
只有当控件具有焦点时,在 Access 中测试 MyComboBox.Text
才会起作用。检查控件是否为 Null 是最好的解决方案 (If IsNull(Me!MyComboBox))
),假设它绑定到的数据字段不允许零长度字符串(它们应该如此,但不幸的是,这不再是 Access 表设计器中的默认值)。
【参考方案1】:
IS 关键字用于测试对象的状态,并且您想测试一个值。以下工作正常:
Dim Valid as Boolean
If Not IsNull(MyComboBox.Value) Then Valid = True
查看以下链接了解更详细的说明:
Nothing? Empty? Missing? Null?
【讨论】:
感谢您的链接。这是非常有用的。您的回答提供了我需要的解决方案。 或者,更简单地说,Valid = (Not IsNull(Me!MyComboBox))
。【参考方案2】:
以这种方式使用此函数(至少在 Excel 中)会引发错误,因为 Null
AFAIK 只能用于测试对象(并且 value 属性不是对象)。
因此...如果您想在 Combobox 中至少有一个选定值时设置 valid = TRUE
,我相信我会使用
valid = CBool(Len(MyCombobox.Value))
希望它有所帮助......希望我没有误解你的问题:-)
【讨论】:
Null 是变体的可能值,而不是对象的值。以上是关于访问 2007 vba 空的主要内容,如果未能解决你的问题,请参考以下文章
使用带有 postgresql 表的 vba 填充组合框访问 2007