Posiadam skoroszyt, który deklaruje zmienną globalną, która ma pomieścić obiekt COM.Jaki jest czas istnienia zmiennej globalnej w programie excel vba?
Global obj As Object
I initalize go w przypadku Workbook_Open tak:
Set obj = CreateObject("ComObject.ComObject");
widzę to stworzył i w tym czasie mogę dokonać pewnych połączeń COM do niego.
Na moim arkuszu mam kilka komórek, które wyglądają jak:
=Module.CallToComObject(....)
wewnątrz modułu Mam funkcji
Function CallToComObject(...)
If obj Is Nothing Then
CallToComObject= 0
Else
Dim result As Double
result = obj.GetCalculatedValue(...)
CallToComObject= result
End If
End Function
widzę te działają na trochę, ale po kilka arkuszy odświeża obiekt obj nie jest już inicjowany, tzn. jest ustawiony na Nic.
Czy ktoś może wyjaśnić, czego powinienem szukać, może to spowodować?
Czy masz wiele funkcji wywołujących obiekt COM lub tylko jeden? Jeśli tylko jeden, możesz rozważyć utworzenie zmiennej statycznej w funkcji: funkcja może wtedy sprawdzić, czy jest zainicjalizowana, a jeśli nie, zainicjować ją. –
Czy globalne zmienne nie są złe? Uważam również, że właściwym słowem kluczowym jest "Publiczny", a nie "Globalny". –