Как я узнаю, что на объект уже есть ссылка?

В некоторых VBA, прикрепленных к электронной таблице Excel 2003, мне нужно использовать некоторые объекты, для создания которых требуется некоторое время, поэтому я хочу выполнить установку только один раз...

Проще показать код, чем написать объяснение!

' 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) - оба пропускают 'set', независимо от состояния myObj. Я не могу сделать

if myObj = Nil then

или же

if myObj = Empty then

или же

if myObj = Nothing then

Есть идеи?

SAL

1 ответ

Решение

Это должно работать:

    If myObj IS Nothing Then

(обратите внимание на "IS"). Если это не сработает, то должна быть специально реализована асинхронная инициализация этим классом, потому что вызовы инициализации COM являются синхронными по умолчанию. Итак, вам нужно проверить документ или поговорить с разработчиком о классе Big, чтобы узнать какое-либо свойство или метод синхронизации, чтобы вы могли ждать.

Другие вопросы по тегам