当前位置:首页 > 攻略

禁用宏专题之Excel VBA 常见技巧23-工作表的深度隐藏

使用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/2484380.html

上一篇

【真三国无双4攻略】三国无双4快速成型打法掌控着一切。

下一篇

【cs15透视】长安cs15 ev | Evo新能源

【禁用宏】如何设置Excel文件安全模式,这里有说明,不要错过

【禁用宏】如何设置Excel文件安全模式,这里有说明,不要错过

禁用宏相关介绍,No.1 网络安全是重点内容。无论是生产企业还是国家事业,互联网已经成为生活不可分割的一部分。 于是,网络安全就显得十分重要,美国的互联网是世界最强的国家,面对网络安全依然无法避免发生事故。 面对网络...

【禁用宏】每次打开EXCEL总显示宏被禁用,让开启宏,两个原原因

【禁用宏】每次打开EXCEL总显示宏被禁用,让开启宏,两个原原因

禁用宏相关介绍,相信在公司工作的很多亲戚都遇到了问题。别人发来了excel文件。每次打开时,excel上面似乎都不能使用宏、宏是否启用、以及别人使用的按钮等一些功能,这让一些同事很为难。大卫亚设(David Asse...