2017-07-28 43 views
0

編寫VBA代碼時,如果您知道要在同一工作簿和某個工作表上操作,是否應該在代碼中爲工作簿對象指定ActiveWorkbook? 例子:
ActiveWorkbook.Sheets("Sheet1").Range("$A$1")
VS
Range("$A$1")
上面的代碼假定您是通過當地的宏工作表Sheet1關閉的(下表Sheet1對象VBA)。VBA - 何時指定ActiveWorkbook

+0

否 - 如果您知道要在同一工作簿中操作,則應使用ThisWorkbook.Sheets(「Sheet1」)來限定工作表對象。可以在不活動的工作簿中調用一個宏 – Tragamor

+1

@ Mukul215 - 您需要設置一個工作表對象。 – Jeeped

+1

我習慣性地使用ActiveWorkbook的唯一時間是將工作表複製到未公開的位置,從而在新的未命名的工作簿中創建工作表的副本。 ActiveWorkbook在此時非常有必要識別新創建的工作簿/工作表,以便對其進行命名和保存。 – Jeeped

回答

0

在大多數情況下比使用ActiveWorkbook更好使用WorkBooks("Book1")這更具體和更健壯,我相信比激活工作簿並在引用範圍時指向它更快。

如果在使用Range("A1")等代碼行時未指定VBA,則VBA將默認爲最後一個活動工作簿。因此,如果您只在一個工作簿中工作,則不需要,因爲上一個活動工作簿始終應該是工作簿希望執行代碼。我通常只在單個工作簿中工作時指定工作表和範圍,因爲如果在沒有特定工作簿的情況下默認情況下它已經完成,那麼告訴Excel選擇活動工作簿有點多餘指定。

只要確保你將運行從你想要的代碼在執行。

包括工作簿名稱絕不會傷害到打開的工作簿宏,它將使你的代碼更健壯。但是,如果您只能在單個工作簿中執行代碼,則不是必需的。