Как узнать, есть ли ссылка на объект?
-
06-07-2019 - |
Вопрос
В некоторых 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, чтобы узнать какое-то свойство или метод синхронизации, которые вы можете ожидать.