有没有办法全局安装在每张纸上触发的更改事件?
我有一个 52 张工作簿,我想触发相同的事件处理程序。带有代码的中央模块将有助于管理触发器代码,但我不想将代码添加到每个工作表中。
有没有办法做到这一点?在工作簿模块中实现它没有触发任何东西。
小智 5
使用Workbook_SheetChange事件宏。该嘘是工作表对象中传递和目标是细胞或已经接收到改变的细胞。一个简单的With ... End With 语句应该足以本地化接收更改的工作表。
一个简单的时间戳事件可能如下所示。
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
With Sh
If Not Intersect(Target, .Columns(1)) Is Nothing Then
On Error GoTo bm_Safe_Exit
Application.EnableEvents = False
Dim rng As Range
For Each rng In Intersect(Target, .Columns(1))
rng.Offset(0, 4) = Now
Next rng
End If
End With
bm_Safe_Exit:
Application.EnableEvents = True
End Sub
Run Code Online (Sandbox Code Playgroud)
对任何工作表的 A 列中的单元格所做的任何更改都将导致当前日期时间被放入同一工作表和行的 E 列中。新创建的工作表将立即受到影响。您可以解析受其 Worksheet .CodeName 属性或 Worksheet .Name 属性影响的工作表。不建议使用Worksheet.Index 属性,除非您锁定工作簿结构以便无法重新排序工作表。