网站大量收购独家精品文档,联系QQ:2885784924

VBA技巧44 禁用宏则关闭工作簿.pdf

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

技巧1禁用宏则关闭工作簿

通常情况下,当应用程序的宏安全性的安全级别设置为“中”时,打开包含Microsoft

Excel4.0版的宏的工作簿,将显示如图1-1所示的“安全警告”对话框。

图1-1安全警告对话框

如果用户选择“禁用宏”按钮,则会显示如图1-2所示的警告消息框,当用户选择“否”

时,不能打开该工作簿;用户选择“是”时,打开该工作簿,但VBA宏被禁止,而Microsoft

Excel4.0版的宏未被禁止。

图1-2MicrosoftExcel4.0宏警告对话框

我们可以利用禁用VBA宏不能禁止MicrosoftExcel4.0版的宏这个特点,使用

MicrosoftExcel4.0版的宏来实现禁用宏则关闭工作簿的功能。

步骤1新建或打开需要添加此项功能的工作簿文件。

步骤2按Ctrl+F11组合键为工作簿添加一个宏表,添加的宏表名称默认为

“Macro1”。

步骤3在宏表“Macro1”的A1至A7单元格中输入下面的内容。

#001禁用宏则关闭工作簿

#002=ERROR(FALSE)

#003=IF(ERROR.TYPE(RUN(TestMacro))=4)

#004=ALERT(因禁用了宏功能,文件将被关闭!,3)

#005=FILE.CLOSE(FALSE)

#006=END.IF()

#007=RETURN()

完成后的宏表如图1-3所示。

图1-3完成输入后的宏表

代码解析:

MicrosoftExcel4.0宏函数以等号(=)开始,其他不是由等号开始的内容将被视作注

释。通常用作定义的宏名称或者作为宏函数实现功能的注释内容设置为斜体字样以示区别,

如图1-3中单元格A1所示。

第2行代码关闭错误检查功能。如果关闭错误检查,那么当宏执行遇到错误时,Microsoft

Excel将不予理会而继续执行。

第3行到第6行代码使用If函数与End.If函数构成条件判断语句。其中,第3行中的

语句通过检查宏函数RUN(TestMacro)的返回错误类型是否为4(禁用宏时的返回结果),

判断工作簿是否禁用了宏功能。如果第3行的结果为True,则执行下面的语句。

在第4、5行代码,插入几个空格来表示相关代码之间的层次结构。第4行中的代码显

示一个消息框。第5行中的代码关闭当前活动工作簿,设置参数值为Fasle表示关闭时工作

簿时不保存对其所作的更改。

第7行代码终止当前代码的执行。MicrosoftExcel4.0宏要求每个宏必须使用RETURN

或HALT函数结束。

步骤4为每个表添加工作表级别的名称“Auto_Activate”,并将引用都指向宏表

“Macro1”的A2单元格。“Auto_Activate”是一个自动宏,表被激活时自动执行。

添加工作表级别的名称的方法如下:选择一张工作表,假设为表“Sheet1”,单击菜单

“插入”→“名称”→“定义名称”。在“定义名称”对话框中添加名称,如图1-4所示。

图1-4定义工作表级别的名称

输入完成后单击“确定”按钮,完成一张工作表的“Auto_Activate”的定义。完成定

义后的名称将在“定义名称”对话框中显示,如图1-5所示。依次为每个表添加

“Auto_Activate”名称。

图1-5名称对话框中的工作表级名称

此外,使用VBA也可以实现同样的操作,并且使用VBA的好处是能够隐藏名称,以避

免名称被删除或修改。代码如下:

#001SubAddPrivateNames()

#002DimshtAsObject

#003ForEachshtInSheets

#004ThisWorkbook.Names.Addsht.Name!Auto_Activate,_

文档评论(0)

麒麟瑞兽 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档