我有两个非常简单的子设备来保护和取消保护带有密码的工作表。 Subs工作完全正常,直到我添加" AllowFiltering:= True"参数。
添加该参数后,在取消保护工作表时会提示我输入密码。但是,如果按“取消”,则表格不受保护(应该是这样)。
因此,密码提示似乎完全是多余的,但有人可以帮助我摆脱它吗?
两个潜艇是:
Sub LockSheet()
If ActiveSheet.Protect = False Then
ActiveSheet.Protect Password:="TopSecretPW", DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFiltering:=True
End If
End Sub
Sub UnlockSheet()
If ActiveSheet.Unprotect = False Then
ActiveSheet.Unprotect Password:="TopSecretPW"
End If
End Sub
如果我使用此宏 - 没有AllowFiltering:= True参数 - 我不会被提示输入pw。
Sub LockSheet()
If ActiveSheet.Protect = False Then
ActiveSheet.Protect Password:="TopSecretPW", DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
End Sub
奖励信息:过滤器和保护功能与参数设置一起正常工作,如果没有输入正确的PW,我无法从菜单中取消保护。只是不请自来的PW提示我想要埋葬。
答案 0 :(得分:0)
问题在于您如何检查工作表是否受到保护。 ActiveSheet.Protect是一个方法,而不是工作表对象的属性。而不是使用If ActiveSheet.Protect
使用If ActiveSheet.ProtectContents
。 ProtectContents是WorkSheet对象的属性,如果工作表受保护则返回true,否则返回false。您修改后的代码应如下所示:
Sub LockSheet()
If ActiveSheet.ProtectContents = False Then
ActiveSheet.Protect Password:="TopSecretPW", DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFiltering:=True
End If
End Sub
Sub UnlockSheet()
If ActiveSheet.ProtectContents = True Then
ActiveSheet.Unprotect Password:="TopSecretPW"
End If
End Sub