Skip to main content

事件编程 (自动化)


✅ 常用 Worksheet 事件列表

🔄 工作表激活/切换相关

事件名描述
Activate当工作表被激活时触发
Deactivate当工作表失去焦点(切换到其他表)时触发
SelectionChange(ByVal Target As Range)当用户更改选定的单元格或区域时触发

✍️ 单元格编辑/更改相关

事件名描述
Change(ByVal Target As Range)当单元格内容更改后触发(注意:仅限用户更改)
BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)用户在单元格上双击时触发
BeforeRightClick(ByVal Target As Range, Cancel As Boolean)用户在单元格上右键点击时触发
Calculate当工作表中任意公式计算时触发

✅ 支持的数据验证、输入控制

事件名描述
FollowHyperlink(ByVal Target As Hyperlink)用户点击超链接时触发

🔒 支持保护与取消保护

事件名描述
PivotTableUpdate(ByVal Target As PivotTable)当工作表中的数据透视表被更新时触发
TableUpdate(无原生事件)表格更新需结合 Change 事件使用

📅 工作表级别的计算/刷新

事件名描述
Change + Intersect实现区域监听变更(需自定义判断区域)
Calculate整个工作表计算完成时触发

✅ 常用 Workbook 事件列表


'a1单元格发生变化 需要修改 b1或完成其他操作
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

' 避免死循环
If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub

If Range("A1").value > 10 Then
Range("B1").value = 0
Else
Range("B1").value = 10
End If

End Sub

📂 一、打开/关闭相关事件

事件名说明
Open工作簿被打开时触发
BeforeClose(Cancel As Boolean)工作簿关闭前触发,可以取消关闭
Deactivate工作簿失去焦点时触发(例如切换到另一个工作簿)
Activate工作簿获得焦点时触发

📝 二、保存相关事件

事件名说明
BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)保存前触发,可以取消保存或处理保存逻辑
AfterSave(ByVal Success As Boolean)保存后触发,可检查是否保存成功

📄 三、工作表相关事件(工作簿中某工作表被操作)

事件名说明
SheetActivate(ByVal Sh As Object)任意工作表被激活时触发
SheetDeactivate(ByVal Sh As Object)任意工作表失去焦点时触发
SheetChange(ByVal Sh As Object, ByVal Target As Range)任意工作表的单元格值被更改时触发
SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)任意工作表的选择区域发生变化时触发
SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)任意工作表中某单元格双击时触发
SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)任意工作表中右键单击时触发
SheetCalculate(ByVal Sh As Object)任意工作表重新计算后触发
SheetPivotTableUpdate(ByVal Sh As Object, ByVal Target As PivotTable)任意工作表中的数据透视表更新后触发
SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)任意工作表中的超链接被点击时触发

📚 四、窗口相关事件

事件名说明
WindowActivate(ByVal Wn As Window)工作簿中的窗口获得焦点时触发
WindowDeactivate(ByVal Wn As Window)工作簿中的窗口失去焦点时触发
WindowResize(ByVal Wn As Window)窗口尺寸发生变化时触发

🧩 五、其他事件

事件名说明
NewSheet(ByVal Sh As Object)新建工作表或图表时触发
ModelChange(仅适用于 PowerPivot)数据模型更改时触发(高级用户)