Access 2007中VBA空

问题描述:

我的程序不处理过去的这个说法:Access 2007中VBA空

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

为什么不呢?

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

+1

欢迎*上。你期望它做什么? 'Valid'是一个'Boolean'变量,如果一个糟糕的测试符合一个条件,那么你只能设置这个变量,而你之后在你发布的代码中对'Valid'做任何事情。 (更好的测试会更像'If MyComboBox.Text “”'或Valid = MyComboBox.Text “”',然后根据“Valid”是true还是false来做一些事情。) –

+0

测试对于Access中的“MyComboBox.Text”,只有当控件具有焦点时才会起作用。检查控件是否为Null是最好的解决方案('如果IsNull(Me!MyComboBox))'),假设它绑定的数据字段不允许使用零长度的字符串(因为它们应该,但不再是默认的访问表设计器,不幸的是)。 –

IS关键字用于测试对象的状态,并且你想测试一个值。以下工作正常:

Dim Valid as Boolean 

If Not IsNull(MyComboBox.Value) Then Valid = True 

请参见下面的链接更详细的说明:

Nothing? Empty? Missing? Null?

+0

感谢您的链接。这是非常丰富的。你的回答提供了我需要的解决方案。 – crushbrain

+2

或者更简单地说,'Valid =(不IsNull(Me!MyComboBox))'。 –

这种方式使用此功能(至少在Excel中)会产生错误,因为Null AFAIK只能用于测试对象(并且value属性不是对象)。

所以...如果你想设置有效= TRUE当在组合框中选择的至少一个值,我相信我会使用

valid = CBool(Len(MyCombobox.Value))

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

+0

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