我有一个宏,必须在运行某些代码之后或之前保护/取消保护工作表。最奇怪的是,有时保护工作表,但是当我想在打开工作簿或激活工作表时保护它时,它不会。
保护代码就是这个:
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
我真的很困惑这个麻烦,因为我无法理解为什么它在某些情况下有效,为什么不呢。 求救!