VBA检查是否设置了对象

时间:2010-04-13 17:20:38

标签: ms-access vba

我有一个全局变量,它是我的自定义类的一个实例。

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

3 个答案:

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