You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在同一工作表中合并两个Worksheet_Change宏?

解决方案

当然可以合并成一个宏,同一工作表中不能存在两个同名的Worksheet_Change事件过程,这就是你之前两个宏无法协同工作的原因。

合并后的完整代码如下:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cell As Range
    Dim cRange As Range
    Dim gRange As Range
    
    ' 关闭事件触发,避免修改单元格时再次触发本宏
    Application.EnableEvents = False
    
    ' 处理C列的修改
    Set cRange = Intersect(Target, Me.Range("C:C"))
    If Not cRange Is Nothing Then
        For Each cell In cRange
            Me.Cells(cell.Row, "B").Value = Application.UserName
            Me.Cells(cell.Row, "A").Value = Format(Date, "dd.mm.yyyy")
        Next cell
    End If
    
    ' 处理G列的修改
    Set gRange = Intersect(Target, Me.Range("G:G"))
    If Not gRange Is Nothing Then
        For Each cell In gRange
            Me.Cells(cell.Row, "F").Value = Application.UserName
            Me.Cells(cell.Row, "E").Value = Format(Date, "dd.mm.yyyy")
        Next cell
    End If
    
    ' 恢复事件触发
    Application.EnableEvents = True
End Sub

关键说明:

  • 使用Me指代当前工作表,让代码更清晰且避免跨工作表的误操作
  • 只在宏开头关闭一次Application.EnableEvents,结尾恢复,减少重复操作
  • 分别判断修改是否发生在C列或G列,对应执行不同的填充逻辑
  • 保留了原代码中遍历修改单元格的逻辑,支持批量修改多个单元格的场景

内容的提问来源于stack exchange,提问作者Sebi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 16:06:01