“如果不_____什么都不是”以及它检查的内容

时间:2016-04-28 15:29:45

标签: vba

VB中的此语句是否检查对象是否存在,还是检查内容是否为空?我在想它正在检查内容为null但我想仔细检查。提前谢谢。

1 个答案:

答案 0 :(得分:3)

" null"的概念在VBA中(在NullReferenceException的意义上 - null,如果您熟悉C#或Java中的NullPointerException),则使用关键字Nothing。这适用于VB6(及更早版本)以及VB.NET。

Dim foo As Object
Debug.Print foo.Bar ' boom, the dreaded runtime error 91 shows up

所以你对Nothing的解释是正确的。

与Java或C#相反,您不能使用比较运算符(C#/ Java中的==,VBA中的=)来在VBA中进行空值检查,因此(并且以类似于SQL的方式),使用Is关键字:

If foo Is Nothing Then ' if (foo == null) { }

或否定形式:

If Not foo Is Nothing Then ' if (foo != null) { }

请注意,此配方无效,因为Nothing无法否定:

If foo Is Not Nothing Then ' incorrect formulation, if (foo == !null) { }

当您意识到VBA具有IsNull功能......然后IsEmpty以及相应的NullvbNull,{{1>时,事情变得混乱和混乱}}和Empty值 - 但这些超出了您的问题范围,可以在MSDN和Stack Overflow上轻松找到。