分享

VBA入门:事件优先级

 惠阳居士 2017-12-13

本文为《Excel 2016应用大全》扩展内容 

事件就是由Excel用户或者系统触发的,可以在VBA代码中进行响应的代码组合

例如:工作表被激活选中单元格、更单元格内容操作可以触发一系列的相关事件通过编写VBA代码响应这些事件,当事被触发时,将运行事件过程执行进行相应的操作

事件过程作为一种特殊的Sub过程,在满足特定条件时被触发执行,如果事件过程包含参数,系统会为相关参数赋值。

事件过程必须写入相应的模块中才能发挥其作用,例如:工作簿事件过程须写入ThisWorkbook模块中,工作表事件过程则须写入相应的工作表模块中,且只有过程所在工作表的行为可以触发该事件。

事件过程作为一种特殊的Sub过程,在VBA中已经规定了每个事件过程的名称和参数。

用户可以【代码】窗口中手工输入事件过程的全部代码,但是更便捷的方法是在【代码】窗口中选择相应的对象和事件,VBE将自动在【代码】窗口中添加事件过程的声明语句和结束语句。

在【代码】窗口上部左侧的【对象】下拉框中选中Worksheet,在右侧的【事件】下拉框中选中ChangeExcel将自动在【代码】窗口中输入如 48-1所示的工作表Change事件过程代码框架。

 48-1    【代码】窗口中快速添加事件代码框架

事件过程的代码需要写入在SubEnd Sub之间,在代码中可以使用事件过程参数,不同的事件过程,其参数也不尽相同。

通过示例 48.2示例 48.4的学习可以知道,工作簿对象的SheetSelectionChange件和Worksheet对象的SelectionChange事件的触发条件是相同的。

但是,Excel应用程序在任何时刻都只能执行唯一的代码,即无法实现并行处理事件代码。

如果同时使用此类触发条件相同的事件,就需要预先确切地知道事件的优先级,即相同条件下事件被激活的先后次序。这些优先级顺序并不需要大家刻意去记忆,可以利用代码轻松的获知事件的优先级。


确定事件的激活顺序
1


新建一个Excel工作簿文件,按组合键切换到VBE窗口。


2


在【工程资源管理器】中双击“ThisWorkbook”,在右侧的【代码】窗口中输入如下代码。


#001  Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _

                                               ByVal Target As Range)

#002      MsgBox ' Workbook_SheetSelectionChange事件' ,vbInformation

#003  End Sub



3


在【工程资源管理器】中双击活动工作表,在右侧的【代码】窗口中输入如下代码。


#001  Private Sub Worksheet_SelectionChange(ByVal Target As Range)

#002      MsgBox 'Worksheet_SelectionChange事件' ,vbInformation

#003  End Sub

4


返回Excel界面中,在活动工作表中选中任意单元格。Excel将依次显示两个提示对话框,如 48-6所示。

 48-6    事件的激活顺序

由此可知,工作表的SelectionChange事件先于工作簿的SheetSelectionChange事件被激活。

对于其他的多个事件激活顺序可以采用类似的方法进行验证。



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多