我想编写一个代码,在关闭工作簿之前,将除一个封面之外的所有工作表都设置为非常隐藏。 我单击“ X”关闭工作簿,宏被触发,一切正常。 然后,我收到经典的Excel保存表格,如果单击“取消”,则会收到错误91-对象变量或未设置带块变量。
有人可以解释一下为什么会这样吗?我过去使用相同的代码,但是没有这个问题
这很有趣,因为如果同时打开另一个excel工作簿,那么它可以正常工作。
在“此工作簿”标签中:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.EnableEvents = True
Call my_macro 'defined in a separate module
Application.EnableEvents = False
End Sub
为清楚起见,模块1中的代码如下:
Public Sub my_macro()
Application.ScreenUpdating = False
On Error GoTo skip
Dim ws As Worksheet
Sheet8.Visible = True
For Each ws In Worksheets
If ws.Name = "Cover" Then
Else
ws.Visible = xlSheetVeryHidden
End If
Next ws
Sheet8.Select
Range("A1").Select
Application.ScreenUpdating = True
ActiveSheet.EnableSelection = xlNoRestrictions
Application.EnableEvents = True
skip:
Application.EnableEvents = True
End Sub