仅当AllowFiltering = True时,取消保护PW的表单提示

时间:2016-05-24 16:59:12

标签: excel vba excel-vba

我有两个非常简单的子设备来保护和取消保护带有密码的工作表。 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提示我想要埋葬。

1 个答案:

答案 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