VBA проверить, если объект установлен - PullRequest
69 голосов
/ 13 апреля 2010

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

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

Ответы [ 2 ]

114 голосов
/ 13 апреля 2010
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
1 голос
/ 30 октября 2016

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...