- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Excel2002VBACh14.doc
学习微软?Excel?2002?VBA?编程和XML,ASP技术?-?CH14
(2010-11-28 17:09:24)
转载▼
分类: 第十四章 微软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 Su
您可能关注的文档
最近下载
- 佳能相机EOSR10说明书.pdf VIP
- 公共危机管理(第二版)课件:突发危机事件的善后恢复和重建.ppt VIP
- 2024中国公路货运行业智慧安全白皮书.pdf VIP
- 爱国经典朗诵《何以华夏、何以中国》朗诵稿.docx VIP
- 2025年医学课件-围绝经期综合征针灸.pptx VIP
- 量子通信技术科普讲座模板.pdf VIP
- 第2课 中国人首次进入自己的空间站(1课时)-课件(共23张PPT).pptx VIP
- 2025年轻人情绪消费趋势报告.pptx VIP
- (高清版)B-T 19363.1-2022 翻译服务 第1部分:笔译服务要求.pdf VIP
- 《别了-“不列颠尼亚”》ppt课件21张.pptx VIP
文档评论(0)