VB中的此语句是否检查对象是否存在,还是检查内容是否为空?我在想它正在检查内容为null但我想仔细检查。提前谢谢。
答案 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
以及相应的Null
,vbNull
,{{1>时,事情变得混乱和混乱}}和Empty
值 - 但这些超出了您的问题范围,可以在MSDN和Stack Overflow上轻松找到。