1

希望能对 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 上的工作表,但除此之外,这些都出现了。

有中间立场吗?一种在不弹出这些警告的情况下保持链接单元格锁定的方法?一种确保组合框在选择时点击链接单元格的方法?

谢谢!

4

1 回答 1

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
于 2012-09-28T22:21:01.230 回答