我不是最精明的VBA編碼器,所以我會很感激你的建議!我有多個模塊,其中每個模塊都需要訪問一個工作簿(Master.xlsm)。 1)使用公共變量訪問其他模塊中的工作簿或2)在使用它的每個子工具中打開它?MS Excel VBA:使用公共變量或通過變量之間的變量更快?
選項#1
我的工作簿設置爲公共變量,並只要工作簿使用Auto_Open打開它分配。
Public wbk_MASTER As Workbook
Sub Auto_Open()
Set wbk_MASTER = Workbooks.Open("C:\Master.xlsm")
End Sub
選項#2
另外,在使用Master.xlsm每個子,我只是把它傳遞這樣的:
Sub DoSomething(wbk_master as Workbook)
' do something
End Sub
這假定任何子調用該子看起來像:
Sub CallDoSomething()
Dim wbk_master as Workbook
Set wbk_master = Workbooks.Open("C:\Master.xlsm")
Call DoSomething(wbk_master)
End Sub
請注意,會有多個像DoSomething這樣的潛艇。如果它有所作爲,我還想爲Master.xlsm中的重要工作表以及特定範圍的值添加變量。
就我個人而言,我認爲選項#1更清潔,但速度更快?
保持範圍儘可能小是最好的做法,選項2是更好的做法。速度 – SWa
我認爲如果您需要在多個潛艇中使用主控,最好打開/設置一次,保持打開狀態,並在需要時訪問數據。我投票支持#1。使用公共作用域將保持對象可訪問。我也同意SWa的看法,但最佳做法是建議,而不是「一個適合所有人」的解決方案。 #1可能會爲xlsm分配更多的內存,但是從這個角度來看,將需要更少的開啓/關閉,所以處理器時間更少,速度更快。 –
我開始從事VBA職業選擇1,但是隨着我的課程的發展,我發現我的代碼頁變成了小說,我的項目變得很龐大,根據選項2將變量傳遞到例程要好得多 - 但是,主要是因爲我可以將任何工作簿傳遞給例程,並且不必在打開時打開並定義大量工作簿。只是感覺更容易跟蹤。 – jamheadart