2017-03-16 64 views
0

我有一個工作簿中的宏分配到快捷方式CTRL + S(故意),它在保存文件之前運行一些東西,但是這個快捷方式被其他任何文檔拾取, 。Excel VBA - 如果activeworkbook是這本工作簿

您可以直接測試Activeworkbook = ThisWorkbook,所以在使用其他工作簿時忽略它嗎?

Sub ShowHiddenSheets() 
If ThisWorkbook = ActiveWorkbook Then 
    `code stuff 
End If 
Exit Sub 
+1

也許這樣的事情? '如果ThisWorkbook.Fullname = ActiveWorkbook.Fullname' – tigeravatar

+0

僅供參考 - 而不是「綁定」宏到'CTRL + S',有一個['Workbook BeforeSave()'](https://msdn.microsoft.com/en- us/library/office/ff840057.aspx)事件。您可能更喜歡使用它,因爲'CTRL + S'可能不一定在保存工作簿之前運行。使用該事件幾乎可以確保代碼在保存之前運行。 – BruceWayne

+0

@BruceWayne謝謝,但是它綁定到CTRL + S而不是'BeforeSave'的原因是這個文件被其他人使用,他們的excel中有一個AddIn,它在保存之前改變了文件中的某些東西,我無法控制這個但它阻止我能夠使用'BeforeSave',因此解決方法。 –

回答

0

而不是做任何檢查,將其添加到所需的工作簿:

dim w as Workbook 

set w = ThisWorkbook 

那麼你的模塊,參考值W之內。 例如:

with w.sheets("Sheets1") 

這將確保宏觀只運行在特定的工作簿,而不是其他