如何将对象设置为可以布尔检查的null值?

时间:2013-03-15 17:08:20

标签: vba

我有一个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,以及它的布尔检查是什么?

2 个答案:

答案 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