微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Worksheet.Protect 并不总是应用密码

如何解决Worksheet.Protect 并不总是应用密码

Excel 2016 上,我想在快速访问工具栏中添加一个按钮,用于切换保护/取消保护活动工作表,始终使用相同的密码。

我创建了一个包含以下宏的 xlam 文件

Sub Protection()
    If ActiveSheet.ProtectContents Then
        ActiveSheet.Unprotect Password:="TEST"
    Else
        ActiveSheet.Protect Password:="TEST"
    End If
End Sub

一开始似乎工作正常。 但是当我执行以下操作时:

  • 使用没有密码的常规 Excel 功能区按钮进行保护
  • 使用宏取消保护(即使不需要密码也能工作,我认为这就是问题所在)
  • 使用宏进行保护
  • 使用常规 Excel 按钮取消保护:无需密码!!!

以下代码似乎可以解决问题:

Sub Protection()
    On Error Resume Next
    If ActiveSheet.ProtectContents Then
        ActiveSheet.Unprotect Password:=""
        If Err.Number <> 0 Then
            ActiveSheet.Unprotect Password:="TEST"
            If Err.Number <> 0 Then
                MsgBox ("The password is not the usual one.")
            End If
        End If
    Else
        ActiveSheet.Protect Password:="TEST"
    End If
    On Error GoTo 0
End Sub

然而,它看起来并不干净。 我在我的工作计算机 (Excel 2016) 上遇到此问题,但在我的个人计算机 (Excel 365) 上似乎没问题。

有没有更好的方法来确保应用正确的保护,无论用户之前对文件做了什么?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。