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

求助:Excel中阻止TODAY()自动更新的VBA解决方案

解决Excel日期自动更新问题的VBA方案

直接用VBA监听D列的输入操作,把静态日期值写入对应C列,彻底避免TODAY()公式自动更新的问题,同时不影响其他公式正常运行。

操作步骤:

  1. 打开目标Excel文件,按Alt + F11打开VBA编辑器
  2. 在左侧“工程资源管理器”里找到对应的工作表(比如Sheet1),双击打开代码窗口
  3. 粘贴下面的代码,保存文件为**启用宏的工作簿(.xlsm)**格式
Private Sub Worksheet_Change(ByVal Target As Range)
    ' 仅处理D列的单元格变更
    If Not Intersect(Target, Me.Columns("D")) Is Nothing Then
        Dim cell As Range
        ' 支持批量粘贴到D列的场景
        For Each cell In Intersect(Target, Me.Columns("D"))
            If cell.Value <> "" Then
                ' 暂时关闭事件触发,防止写入日期时重复触发代码
                Application.EnableEvents = False
                ' 写入静态当前日期(不会随文件打开更新)
                Me.Cells(cell.Row, "C").Value = Date
                Application.EnableEvents = True
            Else
                ' 可选:清空D列时同步清空对应C列日期
                Application.EnableEvents = False
                Me.Cells(cell.Row, "C").ClearContents
                Application.EnableEvents = True
            End If
        Next cell
    End If
End Sub

关键说明:

  • 代码仅作用于当前工作表,其他工作表的公式不受任何影响
  • 写入C列的是纯日期值,不是公式,无论怎么打开文件都不会自动更新
  • 当D列输入/修改文本时,C列会自动填入当日日期;如果清空D列内容,C列也会同步清空(不需要这个功能可删除Else块代码)
  • 需要带时间的话,把代码里的Date替换成Now()即可

内容的提问来源于stack exchange,提问作者Melinda Rigó

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 23:52:08