求助:Excel中阻止TODAY()自动更新的VBA解决方案
解决Excel日期自动更新问题的VBA方案
直接用VBA监听D列的输入操作,把静态日期值写入对应C列,彻底避免TODAY()公式自动更新的问题,同时不影响其他公式正常运行。
操作步骤:
- 打开目标Excel文件,按
Alt + F11打开VBA编辑器 - 在左侧“工程资源管理器”里找到对应的工作表(比如Sheet1),双击打开代码窗口
- 粘贴下面的代码,保存文件为**启用宏的工作簿(.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ó
相关产品推荐
相关产品推荐

