2014-10-10 13 views
1

Workbook_BeforeSave事件不叫:如何啓用事件,以便Workbook_BeforeSave被保存</p> <p>這是我的代碼之前調用

Option Explicit 

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 
    a = MsgBox("Do you really want to save the workbook?", vbYesNo) 
    If a = vbNo Then Cancel = True 
End Sub 

這可能是正常的,因爲事件可能不會啓用。 現在我試圖把Application.Events = True這樣的:

Option Explicit 
Application.Events = True 

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 
    a = MsgBox("Do you really want to save the workbook?", vbYesNo) 
    If a = vbNo Then Cancel = True 
End Sub 

這不會改變任何東西,Workbook_BeforeSave仍然沒有徵召節約。但是,當我關閉Excel文件時,顯示以下錯誤信息:

enter image description here

英譯是「編譯錯誤:一個過程外或錯誤的指令。」

顯然Application.Events = True是不是在正確的地方,但我應該把它放在哪裏?

+0

選項明確和'Workbook_BeforeSave'子程序之間的代碼不能運行,因爲它不叫。我認爲你將不得不添加一個額外的,你手動運行,啓用事件。 – 2014-10-10 09:54:52

+1

首先它是'Application.EnableEvents = True'。其次,更重要的是,你需要弄清爲什麼事件被禁用。 ;) – Rory 2014-10-10 10:01:52

+0

@Goosebumbs:實際上問題是:我如何自動啓用事件。 – 2014-10-10 10:05:55

回答

2

希望這些將幫助:

  1. Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)必須是內ThisWorkbook在VBA項目。

  2. Application.EnableEvents = True不能插入程序或函數之外。

  3. 事件默認啓用。所以,vba項目裏面必須有某個地方事件被禁用。這可以通過搜索:

    一旦你在VBA項目中,按Ctrl + F來打開查找對話框。然後在當前項目中搜索application.enableevents。按查找下一個。看到下面的圖片。

  4. 您可以使用一個小的子來更改和查看Application.EnableEvents狀態(ON/OFF)。將該子放在任何標準模塊下。看到下面的圖片。

enter image description here

相關問題