在Excel中捕获工作表Unprotect事件

时间:2008-10-28 21:14:12

标签: excel excel-vba event-handling vba

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

2 个答案:

答案 0 :(得分:1)

可以使用工具 - >自定义修改菜单。可以将Protect / Unprotect设置为运行宏,例如:

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

End If
End Sub

答案 1 :(得分:0)

无法捕获用户取消保护工作表,但如果他们保存工作簿而不重新保护工作表,则可以发出警告。

在工作簿模块中,输入此代码或类似内容

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