2012-09-06 114 views
5

我現在已經通過這種方式設置了我的工作簿,其中工作簿被硬編碼到Set命令中,我想知道是否有這樣做的方法,以便我可以擁有它它在哪裏流體?因此,無論代碼放在哪裏(在另一個工作簿中),代碼都會適應新的環境。在Excel VBA中設置活動工作簿的值

這是否有意義?

下面是我現在正在使用的,我想要做的是ActiveWorkbook或者其他類似的東西。由於這將設置在代碼的開頭,而不是中間。

Set wbOOR = Application.Workbooks("Open Order Report.xlsm")

回答

20

你可能以後Set wbOOR = ThisWorkbook

只是爲了澄清

ThisWorkbook總是引用代碼駐留在

ActiveWorkbook將指是活動工作簿中的工作簿

小心你怎麼樣在處理多個工作簿時請注意這一點。這真的取決於你想達到什麼樣的最佳選擇。

+0

+1用於解釋差異以及何時何地可能是最合適的,尤其是因爲OP有點模糊。 –

+1

我個人從未使用'ActiveWorkbook',除了捕獲用戶GUI事件,甚至試圖避免。 – user3357963

+3

我同意。我傾向於將所需的所有工作簿設置爲像設置wkbMain = ThisWorkbook或Workbooks(「Main」)這樣的變量。設置wkbProcess = Workbooks(「Process」)然後根據需要使用它們。發現它是最安全的方式,因爲'ActiveWorkbook'可能會變得毛茸茸,並且在最不可預期的時候將代碼絆倒。 –

2

這是你所需要的

Set wbOOR = ActiveWorkbook 
+0

我覺得噢有它... –

+0

就是這樣嗎?到目前爲止,在使用Excel VBA之後,你知道有很多方法可以用來做事情,有時候我有時會忘記最簡單的方法。謝謝! –

+0

重新閱讀您的問題我不確定它是ActiveWorkbook還是ThisWorkbook。 –

0

試試這個。

Dim Workbk as workbook 
Set Workbk = thisworkbook 

現在,您編程的所有內容都將應用於您的包含宏工作簿。

相關問題