Excel VBA 事件过程实现数据变化结果也会随之自动更新
我们知道,在Excel中进行公式运算时,随着单元格数据的变化,公式单元格中的结果也会随之自动更新,如下面简单的演示。
Excel VBA中有一类称作“事件”的过程程序,能够对我们的操作自动作出相应的响应。例如,每次打开工作簿时,自动弹出一个设定好的信息框。
这是响应工作簿的Open事件,即在打开工作簿时Excel所发生的行为。
在VBE编辑器中,单击工作簿或者工作表模块,然后在代码输入窗口顶部左侧列表框中选择工作表对象名,在右侧列表框中会出现供选择的相应的事件。通常,在左侧列表框中选择对象名后,Excel会自动在代码输入窗口中放置默认的事件,如工作表的SelectionChange事件。
事件响应所执行的操作就是我们在事件过程中放置的代码,这些代码规定了我们希望事件发生时要做什么。
在《Excel实战技巧8:基于当前单元格实时显示相关数据记录》中,当用户在工作表第1列含有数据的单元格中移动时,会自动弹出一个窗体,并显示该单元格所在行的详细信息。
这里就是使用了工作表的SelectionChange事件,其代码如下:
Dim lngRow As Long
Private SubWorksheet_SelectionChange(ByVal Target As Range)
Dim rngBottom As Range
With wksUserInfo
'查找列A中最后使用的单元格
Set rngBottom = .Range("A"& .Rows.Count).End(xlUp)
End With
'卸载原来的用户窗体
If lngRow <> Target.Row Then
Unload ufmUser
End If
'当前单元格位于第1列且具有数据时才显示用户窗体
If Target.Column = 1 And Target.Row > 1 And Target.Row <=rngBottom.Row Then
ufmUser.Show 0 '无模式窗体
End If
'填充用户窗体
'在工作表单元格发生改变后能实时反映到用户窗体中
ufmUser.PopulateRecord
'更新用户窗体显示
'当活动单元格变化后,显示该单元格所在行的内容
lngRow = Target.Row
End Sub
注意到,事件过程含有参数,允许将相应的值通过参数传递给事件过程。例如本例中的参数Target,将当前单元格传递到过程。
有时候,一个事件可能触发其他事件,包括该事件本身,从而带来连锁反应。例如,修改工作表单元格中的数据时,会触发Worksheet_Change事件,此时如果事件中的代码修改了另一个单元格中的数据,那么会再次触发该事件,再该事件会再次修改单元格,这引起事件的又一次触发,如此反复循环。这往往不是我们所需要的。
可以使用:
Application.EnableEvents = False
临时禁止触发事件,从而防止发生这类情形。当达到目的后,再重新启用触发事件:
Application.EnableEvents = True
例如:
Private Sub Worksheet_Change(ByValTarget As Range)
Application.EnableEvents = False
If Target.Column = 1 Then
Range("C1") = Target.Value
End If
Application.EnableEvents = True
End Sub
Excel定义了与工作簿对象、工作表对象等相关的一系列事件,还可以使用VBA自定义事件。一般来说,常使用的Excel事件有:
Excel应用程序事件,即根据Excel本身的操作来响应的事件,例如响应新建工作簿的NewWorkbook事件。
工作簿事件,即根据操作工作簿的动作来响应的事件,例如打开工作簿的Open事件。
工作表事件,即根据操作工作表的动作来响应的事件,例如选取工作表单元格变化时的SelectionChange事件。
图表事件,即操作图表时响应的事件,例如激活图表时的Activate事件。
后面的内容将主要讲解工作表事件,其他事件将在后续讲到相应的内容时再详细讲解
如非特殊说明,本站内容均来自于网友自主分享,如有任何问题均请联系我们进行处理!
猜您喜欢
微软正式官宣Windows 11 26H2:硬件要求没变化
2026-06-22微软正式官宣确认,Windows11 26H2版本将在2026年秋季面向全球用户推送,按照以往的发布节奏,这个上线时间大概率会落在10月前后,延续此前保持多年的年度功能更新惯例。 和2025年上线的Windows11 25H2定位完全一致,26H2依旧不属于重量级大版本迭代,后续不会打包大量全新功能推送给用户,而是通过体积仅约200KB的启用包形式下发给存量设备,核心作用只是翻转系统的版本号和内部...
电脑自动更新怎么永久关闭_系统基础稳定维护【策略】
2026-06-04可阻止Windows自动下载安装更新的五种方法:一、禁用WindowsUpdate服务;二、组策略禁用自动更新;三、注册表新建NoAutoUpdate=1;四、禁用WindowsUpdate计划任务;五、禁用UsoSvc服务。 如果您希望阻止电脑在非主动干预下自动下载并安装系统更新,以维持当前运行环境的稳定性与可控性,则需针对WindowsUpdate服务及其关联机制进行多层级干预。以下是实现该目...
电脑系统更新失败一直卡住_自动更新服务重置方法【详解】
2026-06-02Windows更新失败可重置服务、清理缓存、运行疑难解答、修复网络堆栈、使用独立诊断工具或重建数据库。五种方法依次对应服务异常、配置错误、网络干扰、组件损坏及数据库不一致问题。 如果您在执行Windows系统更新时,进度条长时间停滞、反复失败或提示“配置更新失败。正在还原更改”,很可能是WindowsUpdate服务组件异常、缓存损坏或服务状态异常所致。以下是针对该问题的多种自动更新服务重置方法:...
WPS Office怎么使用
2026-06-02在安装wpsoffice之前,用户需先完成软件的部署工作。wpsoffice官方提供了适配windows、macos、linux以及移动端(ios/android)的多个版本,用户可根据自身设备的操作系统,下载并安装对应平台的安装程序。整个安装流程简洁高效,只需依照向导提示依次点击“下一步”即可顺利完成。安装完毕后,直接双击桌面快捷方式,即可启动wpsoffice应用。 启动程序后,用户将进入一个...
百度浏览器怎么关闭自动更新功能_禁止百度强制升级最新版本方法
2026-06-02必须立即阻断百度浏览器自动升级:重命名bdupdate.exe为bdupdate.exe.old,禁用启动项与计划任务中的更新条目,修改hosts文件屏蔽update.browser.baidu.com等域名,并在安卓端关闭权限、通知及WiFi自动下载。 百度浏览器频繁弹出“发现新版本”提示、后台静默下载更新包、强制重启安装,严重影响你继续使用习惯的旧版界面和功能,必须立即阻断其自动升级通道。 重...
Office Plus PPT动画卡顿怎么办 Office Plus PPT怎么添加动画
2026-05-29ppt动画播放不流畅,本质上并非动画功能“失灵”,而是系统资源分配、素材负载与动画逻辑三者协同失衡所致。尤其在惠普laptop15(搭载集成显卡、中等内存配置)运行microsoft365forwindows10环境下,动画卡顿更易暴露底层性能瓶颈。解决关键不在于删减动画,而在于降低单帧渲染压力与匹配硬件执行能力。 一、OfficePlusPPT动画卡顿怎么办?——聚焦真实诱因与精准应对 1、图片...
Excel怎么制作动态折线图 随数据变动自动更新图表
2026-05-29用表格功能可一键实现折线图自动伸缩:选数据区域按Ctrl+T转为表,插入图表后新增数据即刻显示;OFFSET+COUNTA适合非表格场景,需定义动态名称;FILTER函数(仅365/2021)可实时过滤空值并溢出更新。 要在Excel中制作一张随原始数据增删自动延伸或收缩的折线图,避免每次加一行就得手动调整图表数据源范围,必须打破对固定单元格地址(如$A$2:$A$50)的依赖,让图表真正“认得”...
麒麟操作系统如何禁止系统自动更新 麒麟OS设置
2026-05-29麒麟OS禁用自动更新需五步:一、控制面板关系统级开关;二、应用商店关应用更新;三、命令行禁用unattended-upgrades及apt定时器;四、chattr+i锁定sources.list;五、配置aptexclude规则锁定特定软件包。 如果您在使用麒麟操作系统过程中发现系统频繁自动检查、下载或安装更新,导致网络占用升高、设备卡顿、关机延迟或重启被阻止,则可能是系统级、应用级、服务级及AP...
Qoder 快速回退旧版本:当自动更新导致插件不兼容时的救急包
2026-05-28Qoder自动更新后插件不兼容等问题需通过三路径回退:一、管理员执行服务端策略快照回滚;二、终端用户本地运行时重载;三、对接第三方时同步降级Connector协议并轮换历史凭证。 ☞☞☞AI智能聊天,问答助手,AI智能搜索,多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜ 如果您在Qoder使用过程中遭遇自动更新后插件不兼容、数字员工行为错乱或Connector握手失败等问题,则说明新版本策略与当...
UOS 系统更新太频繁?教你如何关闭自动更新
2026-05-28关闭统信UOS自动更新有七种方法:一、控制中心关“下载更新”开关;二、关闭“更新提醒”通知;三、终端停用并禁用uos-update-manager.service服务;四、注释sources.list中UOS更新源地址;五、apt-markhold锁定更新组件;六、修改/uos-update-manager.conf设auto_check和auto_download为false;七、应用商店中关闭...
