2016-08-04 76 views
0

我試圖調用保護功能的工作簿關閉之前執行,但它不工作。在WorkBook_BeforeClose()調用時保護子工作正常自身而不是調用函數BeforeClose事件不工作

這是在模塊1中找到的代碼:

Public Sub protect() 

Dim index As Integer 
index = 1 

Do While index <= ActiveWorkbook.Worksheets.Count 
ActiveWorkbook.Sheets(index).Activate 
If ActiveSheet.Name <> "README" Then 
    ActiveSheet.unprotect 
    Cells.Select 
    Selection.Locked = True 
    Selection.FormulaHidden = False 
    ActiveSheet.protect DrawingObjects:=True, Contents:=True, Scenarios:=True 
    ActiveSheet.Range("A1").Select 
End If 
index = index + 1 
Loop 

ActiveWorkbook.Sheets(1).Activate 

End Sub 

這是的ThisWorkbook找到的代碼:

Private Sub Workbook_BeforeClose(Cancel As Boolean) 
    Call protect 
End Sub 
+1

歡迎StackOverflow上,代碼的女孩。當你說「它不工作」時,你是什麼意思?代碼正在運行時發生錯誤還是代碼(看起來)完全沒有運行,因爲工作表未受到保護?如果你假定兩種情況中的後者,那麼我會插入一個'MsgBox'來確保(如果代碼運行或不運行)。另外,你如何觸發'_BeforeClose'事件?你關閉文件(讓Excel打開)還是關閉Excel(以及如何)? – Ralph

+0

當我發出的那kinfd,我在我的代碼像'debug.print現在插入在這裏和那裏,「保護」'(或任何模塊名稱) –

+0

的代碼是不是運行在所有。我插一個消息框,並沒有出現在關閉文件前,但保護子還是沒有運行:/當你關閉文件時,會觸發BeforeClose事件,那麼它會詢問是否要關閉拯救你之前的變化;即使您選擇取消,而不是保存代碼仍然運行您提示保存 –

回答

0

我也有保護子的確切問題。原來dev1998是正確的,工作簿無法找到該子。嘗試使用: 「呼叫Module1.Protect」或代替模塊1,無論模塊的保護子是