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

Excel中VBA文章第十四章.doc

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

第十四章 微软Excel 2002 中的事件编程 作者:Julitta Korol 翻译:Tiger Chen Oct 21’ 2005 你如何使当用户点击工作表单元格时出现的内置快捷菜单失活?你如何在工作簿打开或者关闭之前显示一个自定义信息?你如 何验证输入在单元格或者单元格区域里的数据?要想对Excel获得彻底控制的话,你必须学习如何响应事件。学习如何进行事件 编程将让你贯彻你自己的功能性到Excel应用软件里去。你需要学习有关该主题的第一件事情就是,什么是事件。这里有个简单 的定义: 事件是发生的东西 无需说,对象发生的事件是Excel的一部分,然而,一旦你学习了Excel中的事件知识,你将发现更容易去理解发生在Word或者 其它任何微软办公软件的对象事件。事件是由对象认可的行动。 既然你知道了什么是事件,那么你需要知道事件是可以被一个应用软件用户(例如你自己),另一个程序或者系统本身引发的。 因此,你如何能够引发事件呢?假设你右键单击一个工作表单元格,该具体操作将显示一个内置的工作表单元格快捷菜单,允许 你快速的访问和工作表单元格相关的频繁使用的命令。但是,万一在某种情况下该内置响应不对呢?你可能想要完全不接受工作 表的右键单击,或者当用户右键单击任何单元格时,单元格快捷菜单上出现一个自定义菜单。有个好消息,就是你可以使用VBA 来编写代码对事件进行反应。 Excel提供了许多事件供你响应,下述对象可以响应事件: ? 工作表 ? 图表 ? 透视表 ? 工作簿 ? 应用软件 通过编写时间过程,你可以决定当事件发生时发生什么。 事件过程介绍 事件过程,作为一种特殊的VBA过程,用来对特定的事件作出反应。该过程包含处理具体事件的VBA代码。有些事件只需要简单 的一行代码,然而,其它的可能更复杂。事件过程拥有名称,按下述方式创建: 对象名称_事件名称() 在事件名称后面的括号里,你可以放置需要发送到过程里的参数。程序员不能更改事件过程名称。 在你编写事件过程对Excel事件作出反应之前,你需要知道: ? 想要响应的具体对象和事件的名称 响应事件的对象在代码窗口的过程下拉清单里显示了一系列事件(见图14-1)。同样,你也可以使用对象浏览器找到事件 名称(见图14-2)。 ? 你需要放置代码的地方 有些事件在标准模块里,其它的在类模块里。然而,工作簿,图表和工作表事件对任何打开的工作表或者工作簿可用。要 给一个内嵌的图表,透视表或者应用软件对象创建事件过程的话,那么你必须首先使用关键字With Events在类模块里创建 一个新对象 图14-1 你可以在代码窗口找到事件名称 图14-2 你可以在对象浏览器里找到事件名称 激活和失活事件 你可以使用应用软件对象的EnableEvents属性来激活或者失活事件。如果你编写了VBA过程但是不希望有个具体事件发生,那 么就将EnableEvents属性设置为False。例如,为了避免在运行过程EnterData(参见下面代码)引发Workbook_BeforeClose事 件,那么在调用Workbook对象Close方法之前,设置EnableEvents属性为False。在你的程序结束之前,你得将EnableEvents 属性设置回True,确保事件被激活了。 1. 打开一新工作簿并另存为DisableEvents.xls 2. 切换到VB编辑器屏幕,双击工程浏览器窗口的ThisWorkbook,并且在出现的代码窗口里输入Workbook_BeforeSave事件 过程 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _ Cancel As Boolean) If MsgBox(Would you like to copy vbCrLf _ this worksheet to vbCrLf _ a new workbook?, vbYesNo) = vbYes Then Sheets(ActiveSheet.Name).Copy End If End Sub 3. 选择插入|模块添加一个标准模块激活VBA工程,并且输入下面显示的过程: Sub EnterData() With ActiveSheet.Range(A1:B1) .Font.Color = vbRed .Value = 15 End With Application.EnableEvents = False ActiveWorkbook.Save Application.EnableEvents = True End Sub 4. 切换到Excel应用软件窗口,并且

文档评论(0)

f8r9t5c + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档