|
本帖最后由 zjnbzyz 于 2020-3-10 20:22 编辑
哪位高手能帮我看下问题在哪,如果启用宏后用密码登陆,需要显示文件关闭前的工作表,该如何修改,userform20为密码登陆窗体,谢谢!
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.CommandBars("myCellx").Delete
Application.CommandBars("myCell").Delete
RunOnClose
End Sub
Private Sub Workbook_Open()
UserForm20.Show
Call main '菜单初始化
AskUserEnabledMacros
End Sub
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
'关闭屏幕更新
Application.ScreenUpdating = False
'遍历工作簿中的所有工作表并设置所有工作表可见
For Each objSheet In ThisWorkbook.Sheets
objSheet.Visible = xlSheetVisible
Next objSheet
'隐藏<启用宏>工作表
wksInfoSheet.Visible = xlSheetVeryHidden
保存工作簿
ThisWorkbook.Saved = True
恢复屏幕更新
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
'关闭屏幕更新
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
|
|