工作簿中每个工作表的工作表更改事件

Spu*_*ous 5 excel events vba

有没有办法全局安装在每张纸上触发的更改事件?

我有一个 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 属性,除非您锁定工作簿结构以便无法重新排序工作表。