我有这个简单的小块vba代码,我期望它返回"条件二"但它反过来一直到三个"。为什么呢?
Dim testValue as String
testValue = Null
If testValue = 8888 Then
Debug.Print "Got to condition one"
ElseIf testValue = Null Then
Debug.Print "Got to condition two"
Else
Debug.Print "Got to condition three"
End If
答案 0 :(得分:4)
这里有两件事:
Null
表示数据库空值,因此,它不等于任何东西 - 甚至本身。要检查某些内容是否为Null
,您必须使用IsNull
函数。Null
适用于数据库,因此可能不是您想要的。您可能希望将testValue
设置为Nothing
,这是VBA"没有分配值"值。 Nothing
也不是简单类型,因此,即使您正在尝试检查某些内容是否为Nothing
,您也无法使用=
;相反,你应该写ElseIf testValue Is Nothing
答案 1 :(得分:1)
试试这个。您不能将Null
放入字符串变量中,您应该在testValue = Null
作业中收到错误。
Sub Test()
Dim testValue As Variant
testValue = Null
If testValue = 8888 Then
Debug.Print "Got to condition one"
ElseIf IsNull(testValue) Then
Debug.Print "Got to condition two"
Else
Debug.Print "Got to condition three"
End If
End Sub