7

所以我有一个令人沮丧的简单问题,我似乎无法解决。

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

基本上,我有一个未绑定的框,用户输入数据然后点击一个按钮。在确认框为“是”后,未绑定框上的数据将复制到绑定框。但是,如果用户没有输入任何内容,则会创建一个空的绑定字段,这可能会严重影响后续查询。

话虽这么说,上面的代码根本不适合我。例如,如果我设置 If Me.Bank_Credit.Value = 1 然后运行它,1 会变成 2,这应该会发生。但它只是拒绝为 Null 甚至 "" 工作。

我很确定这个问题有一个简单的解决方案,我就是想不通。

提前致谢

4

2 回答 2

17

没有任何东西等于 Null,甚至没有另一个 Null。没有什么不等于 Null,即使是另一个 Null。

Bank_Credit Null 时,以下表达式将返回 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)
于 2012-12-13T21:46:00.763 回答
4

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

If myRange is Nothing Then

您将在整个 VBA 帮助文件中看到这类语句(实际上是在具有与此类似的关键字的其他语言中)。

于 2012-12-14T06:04:28.397 回答