在Excel中捕获工作表取消保护事件

我有一个受保护的Excel工作表,没有密码。 我想要做的就是捕获一个用户不保护工作表的事件,这样我就可以生成一条消息(并且唠叨!)。 我可以为应用程序设置事件检查,以便在打开新的工作簿时等,但不能用于解除保护。
有没有人有一个想法?

可以使用工具 – >自定义来修改菜单。 Protect / Unprotect可以设置为运行一个macros,例如:

Sub UnprotectTrap() If ActiveSheet.ProtectContents = True Then MsgBox "Tut,tut!" ActiveSheet.Unprotect Else ActiveSheet.Protect End If End Sub 

没有办法阻止用户不保护工作表,但如果他们保存工作簿而不重新保护工作表,则可以警告他们。

在工作簿模块中,把这个代码,或类似的东西

 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) If Sheets("MyProtectedSheet").ProtectContents = False Then MsgBox "The sheet 'MyProtectedSheet' should not be left unprotected. I will protect it before saving", vbInformation Sheets("MyProtectedSheet").Protect End If End Sub