You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Excel VBA实现特定列单元格修改时自动更新最后修改日期

Excel VBA实现指定列修改时自动更新最后修改日期

适配指定列+解决误触发问题

修改后的代码

直接替换你原有的代码即可:

Private Sub Worksheet_Change(ByVal Target As Range)
    ' 定义需要监听修改的列:B、C、F、G、L
    Dim watchCols As Range
    Set watchCols = Me.Range("B:B,C:C,F:F,G:G,L:L")
    
    ' 检查修改的单元格是否在目标列范围内
    If Not Application.Intersect(Target, watchCols) Is Nothing Then
        ' 关闭事件触发,避免循环更新
        Application.EnableEvents = False
        
        ' 更新对应行的AC列为最后修改日期(要带时间就把Date改成Now())
        Me.Range("AC" & Target.Row).Value = Date
        
        ' 重新开启事件触发
        Application.EnableEvents = True
    End If
End Sub

操作步骤(适合无VBA基础)

  1. 打开你的Excel文件,右键点击需要设置的工作表标签(比如「Sheet1」),选择「查看代码」
  2. 在弹出的VBA编辑器窗口里,删掉原来的代码,粘贴上面的新代码
  3. Ctrl+S保存文件,注意要选「Excel启用宏的工作簿(*.xlsm)」格式,否则宏会失效

关键说明

  • 只监听B、C、F、G、L列的内容修改,其他列的操作不会触发AC列更新
  • 仅当单元格内容实际被修改时才会触发(单纯点击单元格再退出不会触发)
  • Application.EnableEvents = False是为了防止更新AC列时重复触发事件,避免报错
  • 如果需要记录修改的具体时间(不是只显示日期),把代码里的Date改成Now()即可

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

火山引擎 最新活动