Подтвердить что ты не робот

Какова продолжительность жизни глобальной переменной в excel vba?

У меня есть рабочая книга, объявляющая глобальную переменную, предназначенную для размещения COM-объекта.

Global obj As Object

Я инициализирую его в событии Workbook_Open следующим образом:

Set obj = CreateObject("ComObject.ComObject");

Я вижу, что он создан, и в это время я могу сделать несколько COM-вызовов.

На моем листе у меня есть куча ячеек, которые выглядят так:

=Module.CallToComObject(....)

Внутри модуля у меня есть функция

Function CallToComObject(...)
   If obj Is Nothing Then
        CallToComObject= 0
    Else
        Dim result As Double
        result = obj.GetCalculatedValue(...)
        CallToComObject= result
    End If
End Function

Я вижу эту работу немного, но после обновления нескольких листов объект obj больше не инициализируется, т.е. он имеет значение Nothing.

Может кто-нибудь объяснить, что я должен искать, что может вызвать это?

4b9b3361

Ответ 1

Любые из них будут reset глобальными переменными:

  • Использование "Конец"
  • Необработанная ошибка времени выполнения
  • Редактирование кода
  • Закрытие книги, содержащей проект VB

Это не обязательно исчерпывающий список, хотя...

Ответ 2

Я предложил бы 5-й пункт в дополнение к Тиму 4 выше: Выполнение кода (отладка) и остановка до достижения конца. Возможно, это может заменить точку 3, поскольку редактирующий код, похоже, не приводит к потере глобальной переменной.