在打开工作簿上保护工作表

时间:2014-07-21 09:49:39

标签: excel vba excel-vba

我有一个宏,必须在运行某些代码之后或之前保护/取消保护工作表。最奇怪的是,有时保护工作表,但是当我想在打开工作簿或激活工作表时保护它时,它不会。

保护代码就是这个:

Sub Protect()
On Error Resume Next
    Dim lastRow As Integer
    lastRow = ThisWorkbook.Sheets("Risk Log").Range("lastRow").row
    ThisWorkbook.Sheets("Risk Log").Range("A3:D" & lastRow).Locked = True
    ThisWorkbook.Sheets("Risk Log").Range("E3:AH" & lastRow).Locked = False
    ThisWorkbook.Sheets("Risk Log").Protect _
            Password:="MajorEvents", _
            AllowFormattingCells:=True, _
            AllowFiltering:=True, _
            AllowFormattingRows:=True, _
            AllorFormattingColumns:=True, _
            UserInterfaceOnly:=True
End Sub

我从许多程序中调用它,例如,来自Workbook_Open()事件,如下所示:

Private Sub Workbook_Open()
    Application.OnKey "^v", "NotPaste"
    Call Module3.Protect
End Sub

我真的很困惑这个麻烦,因为我无法理解为什么它在某些情况下有效,为什么不呢。 求救!

0 个答案:

没有答案