我有一个全局变量,它是我的自定义类的一个实例。
如何检查对象是否已设置或是否需要初始化?
答案 0 :(得分:111)
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
答案 1 :(得分:1)
(非)安全的方法 - 如果你没有使用明确的选项 - 是......
Not TypeName(myObj) = "Empty"
如果尚未声明对象,也会处理此情况。如果您只想注释掉声明以关闭某些行为,这非常有用......
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会将未声明的变量自动实例化为Empty Variant类型。它不需要辅助布尔来管理行为。
答案 2 :(得分:0)
当使用全局变量时,可能会遇到对象为空的情况。所以,代码:
If Not obj Is Nothing Then
'obj is already set
Else
'set obj
End If
产生“需要对象”错误。
在这种情况下,以下工作:
'First check it is initialized
If IsObject(obj) Then
'Then check if it is set
If Not obj Is Nothing Then
'obj is set
Else
'set obj
End If
End If