【发布时间】:2010-09-19 16:22:37
【问题描述】:
我有一个受保护的 Excel 工作表,没有密码。
我想做的是捕获用户取消保护工作表的事件,以便我可以生成一条消息(并唠叨他们!)。我可以设置应用程序的事件检查、打开新工作簿的时间等,但不能设置 Unprotect。
有人有想法吗?
【问题讨论】:
标签: excel event-handling vba
我有一个受保护的 Excel 工作表,没有密码。
我想做的是捕获用户取消保护工作表的事件,以便我可以生成一条消息(并唠叨他们!)。我可以设置应用程序的事件检查、打开新工作簿的时间等,但不能设置 Unprotect。
有人有想法吗?
【问题讨论】:
标签: excel event-handling vba
可以使用工具->自定义修改菜单。 Protect/Unprotect可以设置运行宏,例如:
Sub UnprotectTrap()
If ActiveSheet.ProtectContents = True Then
MsgBox "Tut,tut!"
ActiveSheet.Unprotect
Else
ActiveSheet.Protect
End If
End Sub
【讨论】:
没有办法让用户取消保护工作表,但如果他们保存工作簿而不重新保护工作表,您可以警告他们。
在 Workbook 模块中,放置这段代码,或者类似的东西
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
【讨论】: