我有幾個關於如何在Excel VBA中使用全局變量的問題。excel vba全局變量和併發性
所以我的應用程序使用由第三方提供的API對象。目前在所有的功能,我們初始化該對象,並使用它:
function()
Dim api as someApi
api.dosth
end function
我只是想知道,而不是對其進行初始化每一次,我能不能使它成爲一個全局變量?就像在開始時聲明它並在workbook_open函數中初始化它一樣?如果多個函數同時運行並試圖使用這個共享的api對象,會不會是一個問題?也只是關於全局變量的一般問題:所有模塊是否共享變量?或者每個模塊只能看到在自己的代碼中聲明的全局變量?例如,如果我在同一工作簿中有模塊a和模塊b,並且api對象在模塊a中聲明並在workbook_open事件中初始化,那麼模塊b中的功能是否可以使用它?
非常感謝!
請參閱這裏瞭解變量作用域如何在VBA中工作http://support.microsoft.com/kb/141693。基本上,是的,你可以聲明一個公共變量來保存你的對象。根據該對象是否具有「狀態」以及您的各種例程如何使用它,它應該可以正常工作。請注意,在VBA中沒有真正的「併發」 - 只有一個函數/子在同一時間運行。 –
如果您感覺功能正常,另一種方法是將對象作爲參數傳遞給需要使用它的任何函數/子。 –