Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Excel事件(三)工作簿事件

Excel事件(三)工作簿事件

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

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

一、工作簿事件基础

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

介绍事件类型时曾介绍过,编写工作簿事件过程代码,需要在“工程资源管理器窗口”双击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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Excel应用实践10:合并多个工作簿中的数据
我有超过50个具有相同格式的Excel文件,它们的列标题相同,并且都放置在同一文件夹,有什么快速的方法将它们合并到一个单独的Excel文件的一个工作表中?
fanjy
2019/07/19
2.4K0
Excel事件示例(二)
Excel工作表中有时有单元格的值希望被锁定,输入密码后才能修改,通常我们使用”审阅“的“保护工作簿”功能来实现,那下面通过vba代码也来实现一下。
无言之月
2019/10/13
1K0
Excel实战技巧78: 创建个人宏工作簿
个人宏工作簿是一个文件,可以在应用程序开启时运行其中的VBA代码,就像是运行功能区选项卡中的命令一样。创建个人宏工作簿很简单,如下所示。
fanjy
2020/05/25
3.3K0
Excel实战技巧78: 创建个人宏工作簿
Excel事件(二)工作表事件
大家好,上节介绍了excel事件的基础知识,后面就按照事件的分类来介绍,本节将首先介绍vba程序开发中最常用的工作表事件。
无言之月
2019/10/13
3.8K0
Excel VBA编程
在Excel中,数据只有文本,数值,日期值,逻辑值和错误值五种类型。但是在VBA中,数据类型跟Excel不完全相同。根据数据的特点,VBA将数据分为布尔型(boolean),字节型(byte),整数型(integer),单精度浮点型(single),双精度浮点型(double),货币型(currency),小数型(decimal),字符串型(string),日期型(date),对象型等等
全栈程序员站长
2022/08/11
46.7K0
Excel VBA编程
VBA专题10-25:使用VBA操控Excel界面之一个示例程序
在前面的一系列主题中,你已经学到了很多小的修改工作簿外观的VBA代码。下面,我们将介绍一个简单的示例程序,实现下面的功能特点:
fanjy
2021/03/26
2.5K0
VBA专题10-25:使用VBA操控Excel界面之一个示例程序
一起学Excel专业开发21:Excel工时报表与分析系统开发(3)——自定义用户界面
一起学Excel专业开发20:Excel工时报表与分析系统开发(3)——自定义用户界面
fanjy
2019/11/07
2K0
一起学Excel专业开发21:Excel工时报表与分析系统开发(3)——自定义用户界面
EXCEL VBA语句集300
        定制模块行为 (1) Option Explicit ‘强制对模块内所有变量进行声明 Option Private Module ‘标记模块为私有,仅对同一工程中其它模块有用,在宏对话框中不显示  Option Compare Text ‘字符串不区分大小写  Option Base 1 ‘指定数组的第一个下标为1 (2) On Error Resume Next ‘忽略错误继续执行VBA代码,避免出现错误消息 (3) On Error GoTo ErrorHandler ‘当错误发生时跳转到过程中的某个位置 (4) On Error GoTo 0 ‘恢复正常的错误提示 (5) Application.DisplayAlerts=False ‘在程序执行过程中使出现的警告框不显示 (6) Application.ScreenUpdating=False ‘关闭屏幕刷新 Application.ScreenUpdating=True ‘打开屏幕刷新 (7) Application.Enable.CancelKey=xlDisabled ‘禁用Ctrl+Break中止宏运行的功能  工作簿 (8) Workbooks.Add() ‘创建一个新的工作簿 (9) Workbooks(“book1.xls”).Activate ‘激活名为book1的工作簿 (10) ThisWorkbook.Save ‘保存工作簿 (11) ThisWorkbook.close ‘关闭当前工作簿 (12) ActiveWorkbook.Sheets.Count ‘获取活动工作薄中工作表数 (13) ActiveWorkbook.name ‘返回活动工作薄的名称 (14) ThisWorkbook.Name ‘返回当前工作簿名称 ThisWorkbook.FullName ‘返回当前工作簿路径和名称 (15) ActiveWindow.EnableResize=False ‘禁止调整活动工作簿的大小 (16) Application.Window.Arrange xlArrangeStyleTiled ‘将工作簿以平铺方式排列 (17) ActiveWorkbook.WindowState=xlMaximized ‘将当前工作簿最大化  工作表 (18) ActiveSheet.UsedRange.Rows.Count ‘当前工作表中已使用的行数 (19) Rows.Count ‘获取工作表的行数(注:考虑向前兼容性) (20) Sheets(Sheet1).Name= “Sum” ‘将Sheet1命名为Sum (21) ThisWorkbook.Sheets.Add Before:=Worksheets(1) ‘添加一个新工作表在第一工作表前 (22) ActiveSheet.Move After:=ActiveWorkbook. _ Sheets(ActiveWorkbook.Sheets.Count) ‘将当前工作表移至工作表的最后 (23) Worksheets(Array(“sheet1”,”sheet2”)).Select ‘同时选择工作表1和工作表2 (24) Sheets(“sheet1”).Delete或 Sheets(1).Delete ‘删除工作表1 (25) ActiveWorkbook.Sheets(i).Name ‘获取工作表i的名称 (26) ActiveWindow.DisplayGridlines=Not ActiveWindow.DisplayGridlines ‘切换工作表中的网格线显示,这种方法也可以用在其它方面进行相互切换,即相当于开关按钮 (27) ActiveWindow.DisplayHeadings=Not ActiveWindow.DisplayHeadings ‘切换工作表中的行列边框显示 (28) ActiveSheet.UsedRange.FormatConditions.Delete ‘删除当前工作表中所有的条件格式 (29) Cells.Hyperlinks.Delete ‘取消当前工作表所有超链接 (30) ActiveSheet.PageSetup.Orientation=xlLandscape 或ActiveSheet.PageSetup.Orientation=2 ‘将页面设置更改为横向 (31) ActiveSheet.PageSetup.RightFooter=ActiveWorkbook.FullName ‘在页面设置的表尾中输入文件路径 ActiveSheet.PageSetup.Le
Tony老师
2020/03/05
2.3K0
ExcelVBA汇总多工作簿中指定工作表到新工作簿
哆哆Excel
2023/09/09
5300
ExcelVBA汇总多工作簿中指定工作表到新工作簿
VBA实战技巧:快速返回最后一次编辑的单元格
在有些情况下,我们可能需要快速返回到最后一次编辑的单元格。例如,最后一次编辑的单元格是单元格K112,然而我的当前单元格在单元格C1,如何定位这个最后编辑的单元格并快速返回到该单元格呢?
fanjy
2022/11/16
1K0
VBA实战技巧:快速返回最后一次编辑的单元格
Excel实战技巧77: 实现在当前工作表和前一个使用的工作表之间自由切换
Windows有一个另人喜爱的快捷键Alt+Tab,可以在当前应用程序和前一个使用的应用程序之间来回切换。Excel也有两个快捷键:Ctrl+PageUP和Ctrl+PageDown,可以在工作表之间导航,它们是按顺序依次切换工作表,这样,如果要从工作表Sheet1切换到工作表Sheet5,要按快捷键4次。thespreadsheetguru.com分享了使用代码创建的快捷键(Alt+`),可以在当前工作表和前一个使用的工作表之间切换。
fanjy
2020/05/14
1.3K0
VBA实战技巧20:选取不同工作表中不同单元格区域时禁止用户执行复制剪切粘贴操作
在《VBA实战技巧19:根据用户在工作表中的选择来隐藏/显示功能区中的剪贴板组》中,我们讲解了根据用户在工作表中的选择来决定隐藏或者显示功能区选项卡中的特定组的技术。在这里就要派上用场了。
fanjy
2021/03/12
2.4K0
VBA代码:强制用户将工作簿保存为.xlsm文件
这样,在保存Excel工作簿时,在“另存为”对话框的“保存类型”下拉列表中,只有一个选项即“Excel启用宏工作簿(*.xlsm)”,如下图1所示,从而让用户只能将工作簿保存为.xlsm文件。
fanjy
2024/02/29
3820
VBA代码:强制用户将工作簿保存为.xlsm文件
文科生也能学会的Excel VBA 宏编程入门(三)——合并文件
在日常工作中,我们经常会遇到需要汇总多个表格的数据,将它们合并到一个表格里的情况。虽然复制粘贴大法好,但如果让你汇总几十人填报的个人信息并做成汇总表格,估计你也膜不动了。因此,这一次我们就通过VBA程序完成这个任务,从此妈妈再也不担心我数数到头秃。
全栈程序员站长
2022/09/02
4K0
仿Excel的撤销功能
这是在www.vbaexpress.com中看到的一个示例,实现了自己以前想做而未做的事情。
fanjy
2024/05/13
2420
仿Excel的撤销功能
VBA: 禁止单元格移动,防止单元格公式引用失效
文章背景: 在工作生活中,存在文件共享的情况。在数据处理时,单元格公式中往往要引用原始数据源。多人操作时,每个人的操作习惯不同,如果数据源的单元格不小心被人为移动或删除,会导致单元格公式引用失效,产生#REF! 错误。如果进行的是跨表引用,这种错误往往还很难发现。
Exploring
2022/09/20
8320
ExcelVBA汇总-多簿一表_to_一簿一表
哆哆Excel
2023/09/09
3070
ExcelVBA汇总-多簿一表_to_一簿一表
Excel事件(四)事件顺序
对于Excel事件的五种类别,已经分别介绍了工作表事件和工作簿事件。而不与对象相关的事件(即ontime方法和onkey方法)也在application主程序对象方法介绍过。(可通过蓝字链接查看。)
无言之月
2019/10/13
2.5K0
问与答57: 如何实现打开工作簿后自动跳转到当前日期所在列?
Q:在Excel工作表中的第1行的每一列,都是按顺序排列的日期,如何在打开工作簿时自动跳转到当前日期所在的列?如下图1所示,如果今天是2019年4月6日,打开工作簿后自动选择这一列。
fanjy
2019/07/19
1.4K0
问与答57: 如何实现打开工作簿后自动跳转到当前日期所在列?
VBA实战技巧28:自动关闭指定时间没有进行操作的工作簿
有时候,我们打开了一个工作簿,但长时间没有使用,此时,你可能想让Excel自动将其关闭。也就是说,对于某个工作簿,如果用户在指定的时间内没有进行任何操作,那么Excel会保存并关闭该工作簿。
fanjy
2021/07/12
2.8K0
推荐阅读
相关推荐
Excel应用实践10:合并多个工作簿中的数据
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档