任何编辑时受保护的工作表警告

时间:2012-09-28 21:56:48

标签: excel vba password-protection

希望能获得Excel 2010的帮助。

我有三张可见的纸张。在Workbook Open上,vba密码可以保护三张表中的每一张。

现在,每当我对任何工作表中的任何解锁单元格进行更改时,我都会收到4个受保护的工作表警告弹出窗口。那个说单元格被锁定而你必须取消保护才能进行编辑的那个?除了我没有编辑锁定的单元格外,这一切都很好。我在其他工作表中编辑未锁定的单元格!

有没有人有这种经历?我玩过了,其中两个可以分为两张。也就是说,当我只保护第一张时,我没有弹出窗口,当我只保护第二张时,我得到2,当我只保护第三张时,我得到2。

取出公式并没有什么不同。

以下是锁定的代码:

For Each wSheet In Worksheets

    wSheet.Unprotect Password:="JMP_DST_Lock"

    If wSheet.Visible = True Then
        wSheet.Protect Password:="JMP_DST_Lock", UserInterFaceOnly:=True
        wSheet.EnableOutlining = True
    End If

Next wSheet

ThisWorkbook.Protect Password:="JMP_DST_Lock"

非常感谢您的帮助。

编辑: 结果是组合框是错误的原因。如果链接的单元格被锁定,则只要工作表计算(自动计算时的任何更改)都会导致警告。现在,我的代码会对每个组合框GotFocus上的工作表进行取消保护,但除此之外,还会出现这些代码。

有中间地带吗?如何在没有这些警告的情况下锁定链接的单元格?除了选择之外,还有一种方法可以确保组合框击中链接的单元格吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

你的逻辑似乎错了。您取消保护工作表,然后保护可见工作表,然后保护整个工作簿(在最后一个代码行中)。

尝试这样的事情(未经测试):

For Each wSheet In Worksheets
  If wSheet.Visible = True Then
    wSheet.Protect Password:="JMP_DST_Lock", UserInterFaceOnly:=True
    wSheet.EnableOutlining = True
  End If
Next wSheet

如果保存工作簿时工作表处于受保护状态,请将其更改为以下内容:

For Each wSheet In Worksheets
  If wSheet.Visible = False Then
    wSheet.UnProtect Password:="JMP_DST_Lock"
  End If
Next wSheet