[英]How to run a VBA code that copies a range of cells from an active sheet and paste it in a new workbook (only values and formatting and no formulates)?
[英]How to make vba code to run auto-close only on active workbook?
這是場景。 我有多個Excel工作簿,它們之間可以相互復制和粘貼數據。 因此,宏可以從一個工作簿打開open.copy.close,然后再打開到另一個工作簿。 我正在創建一個在文件關閉時自動運行宏的功能。
這是問題,當我單擊工作簿1中的宏按鈕時,應該從工作簿2中打開open.copy.close。但是,由於工作簿2中的文件關閉功能時自動運行,將發生錯誤(2個宏不能同時運行)對此有什么解決方案? 我正在尋找一種解決方案,如果它是活動的工作簿,則僅在文件關閉時自動運行宏。 這是我現在所擁有的:
Workbook 1
Sub workbook_beforeclose(cancel As Boolean)
Application.Run "Sheet1.UpdateYellowTabs_Click"
End Sub
Workbook 2
Sub Workbook_BeforeClose(Cancel As Boolean)
Workbook.BeforeClose
Application.Run "Sheet12.UpdateGreen_Click"
End Sub
如何在工作簿代碼中對其進行編碼,以使其僅在人類用戶激活/關閉時才運行,而在通過宏打開/關閉時才運行?
謝謝!
好吧,我不確定從中了解您的最終目標,但是我可以回答“技術”問題。 從技術上講,如果您要檢查給定的工作簿是否處於活動狀態: If Application.ActiveWorkbook Is Me
,
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Not Application.ActiveWorkbook Is Me Then Exit Sub ' <-- add this test
''''''''''''''''''''''''''
' Whatever code goes here
''''''''''''''''''''''''''
End Sub
編輯
但是問題在於,調用wb2.close
將使工作簿wb2
在宏執行期間成為“活動”目錄。 所以這種方法行不通。 另一種方法是在關閉工作簿之前禁用事件。 因此不會觸發事件Workbook_BeforeClose
。 之后,您可以根據需要啟用事件。 代碼如下:
' ... open wb2 and do the work with it
Application.EnableEvents = False
wb2.Close False
Application.EnableEvents = True
請注意,如果您已經在當前宏的開頭禁用了事件(通常建議這樣做),則不需要此附加代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.