前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Excel事件(三)工作簿事件

Excel事件(三)工作簿事件

作者头像
无言之月
发布2019-10-13 16:16:43
1.9K0
发布2019-10-13 16:16:43
举报

大家好,上节介绍工作表事件,本节将介绍工作簿事件,工作簿数量较多,但并没有工作表事件常用,只简单介绍几个常用的工作簿事件。

一、工作簿事件基础

当发生工作簿更改,工作簿中的任何工作表更改,加载宏更改或数据透视表更改时,都可能引发对应的工作簿事件,合理地使用各个事件可以避免一些意料不到的错误,提高代码的可读性和执行效率。

介绍事件类型时曾介绍过,编写工作簿事件过程代码,需要在“工程资源管理器窗口”双击thisworkbook对象,打开“代码编辑器后”,左上角选择workbook对象,右上角选择对应的“事件”。

二、工作簿事件分类

工作簿事件的种类很多,但很大一部分事件很难用到,下面图表列出工作簿事件和触发条件。可以收藏备查,根据需要来使用。

工作簿的事件种类较多,但很多事件用到的频率非常少,下面介绍演示几个常用的工作簿事件。其他的事件如果用以后网上查询适用场景即可。

三、常见工作簿事件

1、open事件

打开工作簿时,将触发此事件,此事件中可以写入一些只需执行一次得代码。(不过对系统设置进行修改的代码不应写在open事件中,而建议写在activate事件中,在执行顺序中activate事件在open事件之后发生,而且open时候是有可能不被执行的。比如打开工作簿时,如果用户始终按住shift键,是可以跳过open事件的。)

事件代码较简单,举个简单示例,比如打开工作簿时,选中固定的工作表。

在工程资源管理窗口中双击thisworkbook模块,在代码窗口中选择workbook对象以及open事件。自动生成open事件的结构代码后,在过程中编写代码简单如下:

MsgBox "请在汇总表输入汇总数据"

Worksheets("汇总表").Select

最后打开该文件的时候,工作簿open事件被触发。会弹窗然后选中“汇总表”。

2、activate事件

activate事件是在激活一个工作簿时触发的事件,那么工作簿激活包括两种情况,一、工作簿打开时,在open事件之后发生该操作。二、从另一个工作簿切换到本工作簿时,也会触发该事件。

(需要注意open事件和activate事件的区别。由于open事件可能被用户跳过,所以系统设置之类的初始化代码建议方在工作簿activate事件中。)举简单示例:

当该工作簿被激活时,就可以触发事件的代码。

3、deactivate事件

deactivate事件activate事件正相反,是当工作簿从活动状态转为非活动状态时触发的事件。包括以下两种情况:一、工作簿从活动状态转为非活动状态。二、关闭工作簿时,在workbook的beforeclose事件之后触发。

一些恢复系统设置之类的代码通常会放在deactivate事件中。比如activate事件中的所作的设置进行清理,恢复excel的初始设置等。这里就不举例说明了。

4、sheetchange事件

sheetchange事件,是当工作簿中任意一个单元格被更改时,自动运行程序。

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

MsgBox "当前更改的工作表为" & Sh.Name & vbCrLf & _

"当前更改的单元格为" & Target.Address

End Sub

首先sheetchange事件的结构代码中, ByVal Target As Range之前的事件介绍过。ByVal表示”按值传递“的意思,Target是参数名称,as Range是表示Target参数是单元格对象类型。

那么ByVal Sh As Object中 Sh是参数的名称,As Object表示参数是对象变量。(可以复习VBA变量类型)

当工作表中的单元格的方法改变的时候。工作表的传递给Sh参数,单元格传递给Target参数。msgbox弹窗Sh.name获得工作表的名称,target.address获得单元格的地址。(代码中vbcrlf表示换行符加上回车符的意思)


今天下雨

本节主要介绍了工作簿事件,大概了解使用场景,注意事件的参数的使用,实际需要的时候现查即可。祝大家学习快乐。


本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Excel和Access学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档