Excel VBA检查数字是否为空:不按预期方式工作

所以我有这个示例程序,我写了一个更大的程序来理解类似的问题。 我有一个a As Variantb As Doublea等于零,而b等于零。 然后我继续检查ab是否为Null

 Sub testNull() Dim a As Variant Dim b As Double a = Null b = 0 If a = Null Then MsgBox (a & "null") 'doesn't print ElseIf a <> Null Then MsgBox (a & " not null") 'doesn't print Else MsgBox (b & " don't know") 'prints End If If b = Null Then MsgBox (b & "null") 'doesn't print ElseIf b <> Null Then MsgBox (b & " not null") 'doesn't print Else MsgBox (b & " don't know") 'prints End If End Sub 

结果表明,虽然excel不考虑abNull ,但同时它不认为这些不是 Null

在这里做检查的正确方法是什么? 是什么导致了这个问题

Null任何testing(包括相等testingNull = Null )都会返回Null ,而不是TrueFalse

要检查Null ,请使用IsNull函数,例如

 If IsNull(a) Then MsgBox "a is null" Else '...