1

在附加到 Excel 2003 电子表格的一些 VBA 中,我需要使用一些需要一段时间才能实例化的对象 - 所以我只想做一次“设置”的事情......

显示代码比编写解释更容易!

' Declare the expensive object as global to this sheet
Dim myObj As SomeBigExpensiveObject

Private Sub CommandButtonDoIt_Click()

   ' Make sure we've got a ref to the object
   If IsEmpty(myObj) Then  ' this doesn't work!
      Set myObj = New SomeBigExpensiveObject
   End If

   ' ... etc

End Sub

如何检查 myObj 是否已设置?

我已经尝试过 IsNull(myObj) 和 IsEmpty(myObj) - 无论 myObj 的状态如何,都跳过“设置”。我做不到

if myObj = Nil then

或者

if myObj = Empty then

或者

if myObj = Nothing then

有任何想法吗?

萨尔瓦多

4

1 回答 1

6

这应该有效:

    If myObj IS Nothing Then

(注意“IS”)如果这不起作用,则必须由该类专门实现异步初始化,因为默认情况下 COM 初始化调用是同步的。因此,您需要查看文档或与开发人员讨论 Big 类的某些属性或同步方法,以便您等待。

于 2009-06-18T16:57:16.520 回答