========================= ① =========================
Private sh As Worksheet
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Sheets("空白").Visible = True
For Each sh In ThisWorkbook.Sheets
If sh.Name <> "空白" Then
sh.Visible = xlSheetVeryHidden
End If
Next
ActiveWorkbook.Save
End Sub
Private Sub Workbook_Open()
For Each sh In ThisWorkbook.Sheets
If sh.Name <> "空白" Then
sh.Visible = xlSheetVisible
End If
Next
Sheets("空白").Visible = xlSheetVeryHidden
End Sub
=========================②========================
代码解读:
1) 第2行到第10行代码是工作簿的BeforeClose事件过程,在工作簿关闭前隐藏除“空白”表以外的所有的工作表。
2) 第3行代码将“空白”表的Visible属性设置为True,使其可见。
3) 第4行到第8行代码使用For Each...Next语句遍历工作簿中所有的工作表,将除“空白”表以外的所有工作表的Visible属性设置为xlSheetVeryHidden,使之隐藏。
Visible属性设置为xlSheetVeryHidden后工作表不能通过“格式”→“工作表”→“取消隐藏”菜单来显示隐藏的工作表。
4) 第9行代码使用Save方法保存代码所在工作簿的更改,在关闭工作簿时不显示消息框。
5) 第10行到第18行代码是工作簿的Open事件过程,在打开工作簿时将除“空白”表以外的所有工作表的Visible属性设置为xlSheetVisible,取消隐藏。如果打开工作簿时禁用宏,则工作簿中除了“空白”表以外,其他的工作表还处于深度隐藏的状态,这样就达到强制用户启用宏的效果,当然这还需要VBA工程保护的配合。
各套教程的介绍:
第1套:VBA代码解决方案
第2套:VBA数据库解决方案
第3套:VBA数组与字典解决方案
第4套:VBA代码解决方案之视频
第5套:VBA中类的解读和利用
第6套:VBA信息获取与处理
上述教程的学习顺序:1→3→2→6→5或者4→3→2→6→5。
分享成果,随喜正能量