Вопрос

В некоторых 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

Есть идеи?

САЛ

Это было полезно?

Решение

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

    If myObj IS Nothing Then

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top