2012-12-13 56 views
6

所以我有一个令人沮丧的简单问题,我似乎无法解决。比较object.Value =空不会产生预期的结果

If Me.Bank_Credit.Value = Null Then 
Me.Bank_Credit.Value = 0 
End If 

基本上,我有一个未绑定的框,用户输入数据,然后点击按钮。确认框为YES后,将未绑定框中的数据复制到绑定框中。但是,如果用户没有输入任何内容,则反过来会创建一个空白的绑定字段,这会严重影响查询的顺利进行。

这就是说,上述代码根本不适用于我。例如,如果我设置了,如果Me.Bank_Credit.Value = 1,然后运行它,那么1会变成2秒,应该会发生。但它只是拒绝为Null甚至“”工作。

我很确定这个问题有一个简单的解决方案,我只是无法弄清楚。

在此先感谢

回答

16

什么都不等于空,甚至没有一个空。而且没有任何东西不等于空,甚至没有空。

Bank_Credit空,下面的表达式将返回null ...不是True如你所料,甚至False

Debug.Print (Me.Bank_Credit.Value = Null) 

这是同样的原因导致立即窗口:

Debug.Print Null = Null 
Null 

使用IsNull()功能。

If IsNull(Me.Bank_Credit.Value) Then 

而且,看看Nz()帮助主题,看看它是否是有用的。你可以做到这一点,虽然它不是一个超过IsNull()的改进。但是Nz()对于其他VBA代码可以非常方便。

Me.Bank_Credit = Nz(Me.Bank_Credit, 0) 
+4

说到空值时,'='不能用作比较器(如果x = Null,那么)仍然可以用作赋值指令(x = Null)。 –

+0

阿哈,工作! 非常感谢。 – user1706975

4

HansUp的答案是正确的,但我认为它有关补充一点,有一个类似的结构为“无”,这基本上是一个解除引用的对象一个VBA关键字。你必须使用语句像

If myRange is Nothing Then 

你会(在有一个关键字与此类似其他语言和实际)看到这些语句排序遍布VBA帮助文件。

相关问题