我试图在工作簿关闭之前调用保护函数,但它不起作用。保护子工作正常,但在WorkBook_BeforeClose()
中调用时则不行这是第1单元中的代码:
Public Sub protect()
Dim index As Integer
index = 1
Do While index <= ActiveWorkbook.Worksheets.Count
ActiveWorkbook.Sheets(index).Activate
If ActiveSheet.Name <> "README" Then
ActiveSheet.unprotect
Cells.Select
Selection.Locked = True
Selection.FormulaHidden = False
ActiveSheet.protect DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveSheet.Range("A1").Select
End If
index = index + 1
Loop
ActiveWorkbook.Sheets(1).Activate
End Sub
这是ThisWorkbook中的代码:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call protect
End Sub
答案 0 :(得分:0)
我也遇到了保护子问题。原来dev1998是正确的,工作簿找不到子。尝试使用: “调用Module1.Protect”,或代替Module1,无论您的保护子属于哪个模块
答案 1 :(得分:0)
您无法在Workbook_BeforeClose模块中或从中更改工作表。我从没在任何地方阅读过它,但是看来一旦触发此事件,Excel就会查找工作表。
我有一张没有保护的床单。它从未受到保护。但是,当我尝试从Workbook_BeforeClose模块向其添加时间戳时,出现了“受保护的工作表”错误。
这也是一个隐藏的工作表,因此我尝试使其可见,以便可以确认它确实不受保护。我无法通过代码或通过属性框来做到这一点。
我最终要做的是将清理例程从Workbook_BeforeClose移到Workbook_Open,再也没有问题了。