访问 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 中)会引发错误,因为 NullAFAIK 只能用于测试对象(并且 value 属性不是对象)。

因此...如果您想在 Combobox 中至少有一个选定值时设置 valid = TRUE,我相信我会使用

valid = CBool(Len(MyCombobox.Value))

希望它有所帮助......希望我没有误解你的问题:-)

【讨论】:

Null 是变体的可能值,而不是对象的值。

以上是关于访问 2007 vba 空的主要内容,如果未能解决你的问题,请参考以下文章

使用带有 postgresql 表的 vba 填充组合框访问 2007

访问 2007 VBA DoCmd.Close 不起作用

将文件名导入列表框,无需路径访问 2007 vba-

更改数据库数据或重新查询后访问 2007 VBA 列表框滞后

VBA访问文本框返回空值

处理 VBA 中的空单元格以进行访问