所以我有一个令人沮丧的简单问题,我似乎无法解决。
If Me.Bank_Credit.Value = Null Then
Me.Bank_Credit.Value = 0
End If
基本上,我有一个未绑定的框,用户输入数据然后点击按钮。确认框上的“是”后,未绑定框上的数据将复制到绑定框中。但是,如果用户没有输入任何内容,那么反过来会创建一个空的绑定字段,这可能严重搞砸了路上的查询。
话虽如此,上述代码对我来说根本不适用。例如,如果我设置了如果Me.Bank_Credit.Value = 1然后运行它,则1s变为2s,应该发生。但它只是拒绝为Null或甚至“”工作。
我很确定这个问题有一个简单的解决方案,我只是想不出来。
提前致谢
答案 0 :(得分:17)
没有什么比Null更重要了,甚至没有Null。没有什么不等于Null,甚至不是Null。
当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)
答案 1 :(得分:4)
HansUp的回答是正确的,但我认为添加“Nothing”的类似构造是相关的,它基本上是解除引用对象的VBA关键字。你必须使用像
这样的陈述If myRange is Nothing Then
您将在VBA帮助文件中看到这些类型的语句(实际上在其他语言中也有类似于此的关键字)。