大家好,我很早以前开始学习利用VBA,至今已有20多年了。开发过大小不同的VBA程序程序已经数不清了。我的平台,以传递我多年实际经验为宗旨,授人以渔,交给大家真正的VBA知识。如果大家对VBA感兴趣,认为VBA可以给自己的实际工作带来切实的帮助,最好系统学习我的教程,成为我的学员,汲取我的经验。由于本人年龄大了,而且学员众多,目前只能做到满足对学员答疑,辅导,对非学员朋友只能看我自己的时间是否允许,还望非学员朋友见谅。
今日推出常用“积木”过程案例分享第322期,内容是:如何做到如果禁用VBA将无法继续工作。VBA是利用Office实现个人小型办公自动化的有效手段(工具)。这是我的对VBA的定义,我推出的专辑就是我多年实际利用VBA的经验记录,都来源于我多年的实践经验。目前我已经将所有代码修正为适合64位和32位两种系统,大家要把这些代码块作为一块块的积木对待,平时要多积累,建立自己的“积木库”,用时拿来可以修正、组合。这就是我的“积木编程”的思想。这些讲解就是我推出的“积木”方案,希望大家加以利用。最近代码多是出自我的第一套教程”VBA代码解决方案”。这些是非常实用的问题解决方案。
========================= ① =========================
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。
分享成果,随喜正能量