VBA проверяет, установлен ли объект - программирование
Подтвердить что ты не робот

VBA проверяет, установлен ли объект

У меня есть глобальная переменная, которая является экземпляром моего пользовательского класса.

Как проверить, установлен ли объект или требуется ли его инициализировать?

4b9b3361

Ответ 1

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

Ответ 2

(un) безопасный способ сделать это - если вы в порядке, не используя опцию явным - это...

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. Это устраняет необходимость в вспомогательном логическом для управления поведением.