发布网友 发布时间:2022-08-24 02:08
共1个回答
热心网友 时间:2024-12-01 08:13
请参考
http://zhidao.baidu.com/question/141093343.html
http://www.excelperfect.com/index.php/2010/05/06/askuserenablemacros/
代码解析:
第2行到第10行代码是工作簿的BeforeClose事件过程,在工作簿关闭前隐藏除“空白”表以外的所有的工作表。
第3行代码将“空白”表的Visible属性设置为True,使其可见。
应用于Charts和Worksheets对象的Visible属性决定对象是否可见,语法如下:
expression.Visible
参数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方法保存代码所在工作簿的更改,在关闭工作簿时不显示消息框。
第10行到第18行代码是工作簿的Open事件过程,在打开工作簿时将除“空白”表以外的所有工作表的Visible属性设置为xlSheetVisible,取消隐藏。如果打开工作簿时禁用宏,则工作簿中除了“空白”表以外,其他的工作表还处于深度隐藏的状态,如图 28 2所示,这样就达到强制用户启用宏的效果,当然这还需要VBA工程保护的配合。