当前位置: 首页 > news >正文

VBA高级应用30例应用4:利用屏蔽事件来阻止自动运行事件

《VBA高级应用30例》(版权10178985),是我推出的第十套教程,教程是专门针对高级学员在学习VBA过程中提高路途上的案例展开,这套教程案例与理论结合,紧贴“实战”,并做“战术总结”,以便大家能很好的应用。教程的目的是要求大家在实际工作中分发VBA程序,写好的程序可以升级。本套教程共三册三十个专题,本讲的内容是:VBA高级应用30例应用4:利用屏蔽事件来阻止自动运行事件

分享成果,随喜正能量】138 聪明人,抬人不抬杠;傻子,抬杠不抬人。聪明人,把别人抬得很高,别人高兴、舒服了,看你顺眼了,自然就愿意帮你!而傻人呢?不分青红皂白,和人家抬杠,别人不高兴、不舒服,怎么会愿意帮你呢?。

应用4 工作簿打开时阻止事件的自动运行

作为开发人员,需要经常打开包含VBA的文件,并运行代码。但并不总是这样,有时我们还想阻止某些代码的运行,最为典型的是工作簿打开事件中的某些特殊命令,如身份验证部分,我们在某些时候是希望阻止工作簿打开时自动运行的。这篇应用就是向大家展示如何实现这一点。为什么要这么做呢?通常,如果在自己的文件中使用了工作簿自动打开事件,而文件仍在开发中,自动运行Open事件可能需要一段时间才能运行代码,或者在开发文件的程序书写过程中,我们不希望在此时配置项目。

在实际应用中,我们要求用户在打开文件事件中处理某些任务时,一定要启动宏。如果没有设置启用宏,这些事件处理程序会保持禁用状态,这是我们不希望看到的。在这篇应用中,我会同时给大家展示如果用户禁用宏,将不能顺利处理工作簿的方法。但要注意,不信任的宏文件要小心处理。

2 利用屏蔽事件来阻止自动运行事件

现在我们来研究一下如何能绕过身份验证。这个应用中我提供了三种方法,这部分的方案是屏蔽事件。思路是屏蔽工作簿打开时的Workbook_Open事件。因为身份验证是写在了Workbook_Open事件中,所以如果能屏蔽这个事件,就成功地绕过了身份验证过程。这个思路是非常值得实践的。

为了实现上述思路,我们想到了工作簿的父级对象Application对象,这个对象代表整个 Microsoft Excel 应用程序。所以我们可以利用这个对象的某些属性设置来屏蔽某些对象的设置。这里需要利用的是EnableEvents 属性。

  • Application.EnableEvents 属性,如果指定对象已启用事件,此属性的值为 True。 读/写 Boolean。

语法:expression.EnableEvents

expression:表示 Application 对象的变量。

下面我们讲解屏蔽Workbook_Open事件,我们新建一个Excel工作簿,在通用模块中录入下面的代码:

Sub mynzEnableEvent()

Application.EnableEvents = False

End Sub

代码截图:

然后我们将光标放在代码中,点击运行按钮:

这时,我们点击有身份验证的工作簿:

这时我们发现,工作簿已经顺利地打开了:

这里我们再补充一点:

上面屏蔽事件的代码是写在了通用模块中,还可以写在即时窗口中,我们打开VBE窗口,按下CTRL+G组合键调出即时窗口,录入下面的代码:

Application.EnableEvents = False

截图如下:

同样需要把鼠标放在代码中,然后按下回车键,取得的效果是一样的。这里不再做截图演示。

  • 以上部分用到的程序文件:高级应用04_1.XLSM

我20多年的VBA实践经验,全部浓缩在下面的各个教程中:



相关文章:

  • 气动带刮刀硬密封固定式对夹球阀:专为高粘度、强腐蚀性介质设计的工业解决方案-耀圣
  • 聊一部很癫的电影
  • 嵌入式学习笔记 - 垂直消隐期
  • vue数据可视化开发常用库
  • [特殊字符]渲染 101 云渲染:C4D XP 粒子创作者的高效解算新方案
  • World of Warcraft [CLASSIC][80][Deluyia] [Fragment of Val‘anyr]
  • 系统的从零开始学习电子的相关知识,该如何规划?
  • [C++类和对象]类和对象的引入
  • 应急响应基础模拟靶机-security1
  • 电位器如何接入西门子PLC的模拟量输入
  • 【技巧】如何把win10 wsl的安装目录从c盘迁移到d盘
  • 弹窗表单的使用,基于element-ui二次封装
  • C++面向对象特性之多态篇
  • 实现线程的4种方法
  • Linux 系统安装Minio详细教程
  • 第04章—技术突击篇:如何根据求职意向进行快速提升与复盘
  • Windows Server 2025开启GPU分区(GPU-P)部署DoraCloud云桌面
  • LINUX CFS算法解析
  • C语言实现三子棋
  • 数字化转型:概念性名词浅谈(第二十六讲)
  • 巴基斯坦称回应挑衅,对印度发起军事行动
  • 上财发布“AI+课程体系”,人工智能如何赋能财经教育?
  • 长江画派创始人之一、美术家鲁慕迅逝世,享年98岁
  • 玉渊谭天丨一艘航母看中国稀土出口管制为何有效
  • 华为鸿蒙电脑正式亮相,应用生态系统能否挑战Windows?
  • 身临其境感受伟人思想力量,“马克思书房”在上海社科馆揭幕