公共密码无法在受保护的工作表中识别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了公共密码无法在受保护的工作表中识别相关的知识,希望对你有一定的参考价值。

我在Module1中有子“ProtectAllSheets”,在Sheet1对象上有另一个子,如果有#REF则用于删除整行! Sheet1的C列出错。当工作表受到保护时它工作正常...但是当我关闭工作簿并再次打开它(它仍然受到保护)时,它不会删除带有错误的行,尽管它是“UserInterface = True”。如果我取消保护表单,它可以正常工作。似乎只要我关闭工作簿,一些信息就会“以某种方式”丢失......我只是无法理解代码到底有什么问题。

Option Explicit
Public pwd1 As String, pwd2 As String

Sub ProtectAllSheets()
Dim ws As Worksheet

  pwd1 = InputBox("Enter your password", "")
    If pwd1 = "" Then Exit Sub
  pwd2 = InputBox("Enter the password again", "")
    If pwd2 = "" Then Exit Sub
    'Checks if both the passwords are identical
    If InStr(1, pwd2, pwd1, 0) = 0 Or _
    InStr(1, pwd1, pwd2, 0) = 0 Then
    MsgBox "Please type the same password. ", vbInformation, ""
      Exit Sub
    End If
For Each ws In ActiveWorkbook.Sheets
    If ws.ProtectContents = False = True Then
      ws.Protect Password:=pwd1, UserInterFaceOnly:=True
    End If
        Next ws
MsgBox "Sheets are protected."
End Sub

Option Explicit

Sub Worksheet_Activate()
Dim sh As Worksheet
Dim c As Long
Set sh = ActiveSheet

    For c = 400 To 2 Step -1
        If IsError(Cells(c, 3)) Then
         Rows(c).EntireRow.Delete
        End If
    Next c

End Sub
答案

Ok Folks,对于那些可能有类似问题的人。我知道这不是最好的解决方案,但它有效。看起来UserInterFaceOnly功能没有保存在文件中,只要关闭并重新打开工作簿,它就会消失。所以,这就是我所做的。步骤1.删除Sub ProtectAllSheets()步骤2.插入Workbook_Open过程。

现在......如果他们按下Alt + F11,有人仍然可以看到密码“1214”。我对此无能为力。

Sub Workbook_Open()

Dim ws As Worksheet
For Each ws In ActiveWorkbook.Sheets
      If Not ws.ProtectContents Then
      ws.Protect Password:=1214, UserInterFaceOnly:=True
      End If
        Next ws
        
    MsgBox "Sheets are protected."

End Sub

以上是关于公共密码无法在受保护的工作表中识别的主要内容,如果未能解决你的问题,请参考以下文章

在受保护的路线中传递道具

excel多选选项列表VBA不在密码保护表上运行

使用片段时 Intellij 无法正确识别 Thymeleaf 模型变量

如何使用 Apache POI 3.14 创建和编辑密码保护 Excel 工作表?

我需要显示已登录用户的姓名

我的片段中的按钮无法识别