使用VBA开发的工作簿文件与用户交往后,通常会在打开工作簿时启用宏。禁用宏时,除了使用“关闭工作簿”功能外,还可以隐藏所有包含数据的工作表。如果在打开工作簿时禁用宏,则只会显示空白工作表,从而达到强制启用宏的效果。代码如下:
# 001 dim sh as工作表
# 002 privatesubworkbook _ before close(cancel as boolean)
#003 S=True
#004 For Each sh In T
# 005 If ' blank ' Then
#006=xlSheetVeryHidden
#007 End If
#008 Next
#009交流
#010 End Sub
#011 Private Sub Workbook_Open()
#012 For Each sh In T
# 013 If ' blank ' Then
#014=xlSheetVisible
#015 End If
#016 Next
#017 S=xlSheetVeryHidden
#018 End Sub
解析代码:
第2-10行代码是工作簿的BeforeClose事件过程,该过程在工作簿关闭之前隐藏除“空”表以外的所有工作表。
第3行代码将“空白”表的Visible属性设置为True,使其可见。
应用于Charts和Worksheets对象的Visible属性决定对象是否可见,语法如下:
ex
参数expression是必需的,该表达式返回上面的对象之一。
Visible属性可以设置为表格 28‑1所示的XlSheetVisibility常量之一。
常量 | 值 | 描述 |
xlSheetHidden | 0 | 隐藏对象,可以通过“格式”→“工作表”→“取消隐藏”菜单使对象重新可见,等同于设置为False。 |
xlSheetVisible | -1 | 使对象重新可见,等同于设置为True。 |
xlSheetVeryHidden | 2 | 隐藏对象,使该对象重新可见的唯一方法是将此属性设置为True或xlSheetVisible。 |
表格 28‑1 XlSheetVisibility常量
第4行到第8行代码使用For Each...Next语句遍历工作簿中所有的工作表,将除“空白”表以外的所有工作表的Visible属性设置为xlSheetVeryHidden,使之隐藏。
Visible属性设置为xlSheetVeryHidden后工作表不能通过“格式”→“工作表”→“取消隐藏”菜单来显示隐藏的工作表。
第9行代码使用Save方法保存代码所在工作簿的更改,在关闭工作簿时不显示如图 28‑1所示的消息框。
图 28‑1 工作簿保存提示
第10行到第18行代码是工作簿的Open事件过程,在打开工作簿时将除“空白”表以外的所有工作表的Visible属性设置为xlSheetVisible,取消隐藏。如果打开工作簿时禁用宏,则工作簿中除了“空白”表以外,其他的工作表还处于深度隐藏的状态,如图 28‑2所示,这样就达到强制用户启用宏的效果,当然这还需要VBA工程保护的配合。
图 28‑2 工作表深度隐藏
1.《禁用宏,干货看这篇!Excel VBA 常见技巧23-工作表的深度隐藏》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《禁用宏,干货看这篇!Excel VBA 常见技巧23-工作表的深度隐藏》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/gl/2532184.html