Sub AskUserEnabledMacros()
Dim wksInfoSheet As Worksheet
Dim objSheet As Object
On Error Resume Next
'引用<啟用宏>工作表并判斷其是否存在
Set wksInfoSheet = ThisWorkbook.Worksheets("啟用宏")
If wksInfoSheet Is Nothing Then
MsgBox "不能夠找到<啟用宏>工作表", vbCritical
Exit Sub
End If
'關(guān)閉屏幕更新
Application.ScreenUpdating = False
'遍歷工作簿中的所有工作表并設(shè)置所有工作表可見(jiàn)
For Each objSheet In ThisWorkbook.Sheets
objSheet.Visible = xlSheetVisible
Next objSheet
'隱藏<啟用宏>工作表
wksInfoSheet.Visible = xlSheetVeryHidden
'保存工作簿
ThisWorkbook.Saved = True
'恢復(fù)屏幕更新
Application.ScreenUpdating = True
End Sub
'隱藏除<啟用宏>工作表之外的所有工作表
Sub RunOnClose()
Dim wksInfoSheet As Worksheet
Dim objSheet As Object
On Error Resume Next
'引用<啟用宏>工作表并判斷其是否存在
Set wksInfoSheet = ThisWorkbook.Worksheets("啟用宏")
If wksInfoSheet Is Nothing Then
MsgBox "不能夠找到<啟用宏>工作表", vbCritical
Exit Sub
End If
'關(guān)閉屏幕更新
Application.ScreenUpdating = False
'顯示<啟用宏>工作表
wksInfoSheet.Visible = xlSheetVisible
'隱藏其他工作表
For Each objSheet In ThisWorkbook.Sheets
If Not objSheet Is wksInfoSheet Then
objSheet.Visible = xlSheetVeryHidden
End If
Next objSheet
'保存工作簿
ThisWorkbook.Save
End Sub
Sub auto_open()
'當(dāng)工作簿打開時(shí)運(yùn)行AskUserEnabledMacros過(guò)程
AskUserEnabledMacros
End Sub
Sub auto_close()
'隱藏除<啟用宏>工作表之外的所有工作表
RunOnClose
End Sub