我有一個工作簿,聲明一個全局變量,旨在容納一個COM對象。什麼是excel vba中全局變量的生命週期?
Global obj As Object
我initalize它在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。
有人可以解釋我應該尋找什麼可以導致這種情況嗎?
你有多個函數調用你的COM對象,或只是一個?如果只有一個,那麼你可以考慮在函數中將它作爲一個靜態變量:然後函數可以檢查它是否已初始化,如果沒有,則初始化它。 –
不是全局變量邪惡嗎?另外,我相信正確的關鍵字是「Public」,而不是「Global」。 –