我有一个VBA函数返回一个Dictionary,然后如果在构建Dictionary时出错,则采取一定的动作。像这样:
Public Sub takeAction(s as string)
Dim dict as Dictionary
Set dict=makeADictionary(s)
If dictionaryIsOK(dict) Then
doSomething
Else
doSomethingElse
End If
End Sub
我在制作dictionaryIsOK
函数时遇到问题,因为如果我尝试将Dictionary设置为Nothing
作为指示空值的方法,则似乎无法检查此值。例如:
Sub testNothing()
Dim d As New Dictionary
Set d = Nothing
Debug.Print d Is Nothing
End Sub
即使我将false
设置为d
,也会打印Nothing
。对于所有其他对象类型,这似乎也是如此。
那么,我可以为一个对象分配什么空值,在本例中是一个Dictionary,以及它的布尔检查是什么?
答案 0 :(得分:4)
Dim d As New Dictionary
在VBA / VB6中,上面的意思是“声明变量d
,它神奇地总是包含Dictionary
的实例。如果我将变量设置为Nothing
,则实例化一个新的{{} 1}}对我来说,下次我访问变量。“
您想要删除Dictionary
:
New
然后你可以检查变量Dim d As Dictionary
是否。
答案 1 :(得分:1)
您需要正确实例化。这有效:
Dim d As Dictionary
Set d = New Dictionary
Set d = Nothing
Debug.Print d Is Nothing