VBA检查是否设置了对象

我有一个全局variables是我的自定义类的一个实例。

如何检查对象是否已设置,或者是否需要初始化?

If obj Is Nothing Then ' need to initialize obj: ' Set obj = ... Else ' obj already set / initialized. ' End If 

或者,如果你喜欢,反过来:

 If Not obj Is Nothing Then ' obj already set / initialized. ' Else ' need to initialize obj: ' Set obj = ... End If 

(不)安全的方式来做到这一点 – 如果你确定不使用选项显式 – 是…

 Not TypeName(myObj) = "Empty" 

如果对象没有被声明,这也处理这种情况。 如果您只想注释一个声明来closures某些行为,这是非常有用的。

 Dim myObj as Object Not TypeName(myObj) = "Empty" '/ true, the object exists - TypeName is Object 'Dim myObj as Object Not TypeName(myObj) = "Empty" '/ false, the object has not been declared 

这是有效的,因为VBA会自动实例化一个未声明的variables作为空variablestypes。 它消除了辅助布尔值来pipe理行为的需要。