我有一个全局变量,它是我的自定义类的实例。
如何检查对象是否已设置或是否需要初始化?
我有一个全局变量,它是我的自定义类的实例。
如何检查对象是否已设置或是否需要初始化?
Answers:
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
obj Is Nothing
与检查不一样IsNothing(obj)
!感谢您使用正确的语法进行检查...不确定为什么IsNothing()
行为会有所不同...
Not (obj Is Nothing)
比容易理解Not obj Is Nothing
。我的大脑不知道“ Not obj”是什么!
执行此操作的(不安全)方式-如果您可以不使用显式选项,则可以-是...
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类型。它消除了使用辅助布尔来管理行为的需求。
Option Explicit
。除了问题,它什么也没有。若要“切换”行为,请使用条件编译。