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 (将#修改为@)