【问题标题】:Access 2007 vba null访问 2007 vba 空
【发布时间】:2011-09-15 23:40:41
【问题描述】:

我的程序不会处理超过此语句:

Dim valid as Boolean
If MyComboBox.Value Is Not Null Then valid = true

为什么不呢?

如果我尝试使用停止点单步执行,程序不会继续执行下一步,但表单会继续运行,就好像没有运行任何 vba 代码一样。这很烦人,因为这意味着表单仍然可以使用,就好像没有任何问题但没有发生预期的行为。

【问题讨论】:

  • 欢迎来到 StackOverflow。你期望它做什么? Valid 是一个 Boolean 变量,只有在错误的测试满足一个条件时才设置它,然后在发布的代码中对 Valid 不执行任何操作。 (更好的测试应该更像If MyComboBox.Text <> "",或者Valid = MyComboBox.Text <> "",然后根据Valid是真还是假来做一些事情。)
  • 只有当控件具有焦点时,在 Access 中测试 MyComboBox.Text 才会起作用。检查控件是否为 Null 是最好的解决方案 (If IsNull(Me!MyComboBox))),假设它绑定到的数据字段不允许零长度字符串(它们应该如此,但不幸的是,这不再是 Access 表设计器中的默认值)。

标签: ms-access vba null


【解决方案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 是变体的可能值,而不是对象的值。
猜你喜欢
  • 2016-08-23
  • 2012-07-04
  • 2011-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多