强制启用宏与深度隐藏工作表
打开VBE编辑器在hisWorkbook添加VBA代码,如下图
操作方法:
按ALT F11组合键打开VBE编辑器,复制下面的代码到ThisWorkbook里面
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Sheets('空白').Visible = -1 '空白表取消隐藏
Dim sh As Worksheet
For Each sh In ThisWorkbook.Sheets
If sh.Name <> '空白' Then
sh.Visible = 2 '其他的表深度隐藏
End If
Next
Sheets('空白').Select
ActiveWorkbook.Save '保存更改
End Sub
Private Sub Workbook_Open()
Application.Visible = True '显示工作簿
For Each sh In ThisWorkbook.Sheets
If sh.Name <> '空白' Then
sh.Visible = -xlSheetVisible '除'空白'表以外所有工作表取消隐藏
End If
Next
Sheets('空白').Visible = 2 '空白表隐藏
End Sub
PS:这两段代码的作用分别是在关闭工作簿的时候深度隐藏除了“空白”表之外的其他工作表和打开工作簿的时候(启用宏)显示被深度隐藏的工作表(如果不启用宏这些被深度隐藏的工作表将无法显示,无法被查看)
最终效果如下:
上面动画主要展示以下几点效果:
1、打开工作簿后,因为没有启用宏,所以只能看到表名为“空白”的工作表,其他表均无法看到;
2、启用宏后,被深度隐藏的表1和表2都取消了隐藏可以查看了,表名为“空白”的工作表被深度隐藏;
3、关闭工作簿时,表名为“空白”的工作表被取消隐藏,其他工作表被深度隐藏(防止下次被打开的时候不启用宏也能看到内容)
PS:这里的深度隐藏是指在VBE编辑器里面控制的工作表的显示/隐藏属性,不是指一般的工作表隐藏,所以要取消隐藏必须要通过VBE编辑器。
知识拓展:
我们可以通过宏代码控制工作表的显示和隐藏,可是如果代码被别人修改了,那岂不是不起作用了吗?所以我们可以给工作簿的VBE编辑器设置工程密码,避免代码被随意修改。