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

Excel自定义LastModified宏无法自动更新,求打开文件时自动更新方案

解决Excel自定义函数打开工作簿时自动更新的问题

嘿Max,当然可行啦!你的自定义函数LastModified()默认不会在工作簿打开时自动触发计算——哪怕设置了自动计算模式,Excel对自定义函数的计算触发逻辑比较保守,只有当函数参数变化或手动编辑时才会更新。下面给你两个简单的解决方案:

方案1:把函数改成易失性函数

给函数加上Application.Volatile声明,这样它会在每次工作表的计算周期(包括打开工作簿时)自动更新。修改后的代码如下:

Function LastModified() As Date
    Application.Volatile ' 标记为易失性函数,触发自动计算
    LastModified = ActiveWorkbook.BuiltinDocumentProperties("Last Save Time")
End Function

这个方法最简单,修改完函数后,下次打开工作簿时,单元格里的=LastModified()就会自动刷新了。

方案2:用工作簿打开事件强制刷新

如果你不想让函数变成易失性(避免不必要的频繁计算),可以通过Workbook_Open事件手动触发计算:

  • 按Alt+F11打开VBA编辑器
  • 在左侧项目栏找到ThisWorkbook,双击打开它的代码窗口
  • 在顶部下拉菜单里,先选Workbook,再选Open,然后输入以下代码:
Private Sub Workbook_Open()
    ' 替换成你存放公式的单元格地址,比如Sheet1的A1
    ThisWorkbook.Sheets("Sheet1").Range("A1").Calculate
    ' 如果要刷新整个工作表,就用:ThisWorkbook.Sheets("Sheet1").Calculate
End Sub

这样每次打开工作簿时,代码会自动指定单元格(或整个工作表)重新计算,你的最后修改日期就会自动更新了。

额外小提示:更稳定的获取修改日期方式

有时候BuiltinDocumentProperties("Last Save Time")可能会因为文件类型(比如未保存的新文件)或权限问题出错,你可以用FileDateTime函数替代,兼容性更好:

Function LastModified() As Date
    Application.Volatile
    If ThisWorkbook.Path <> "" Then ' 检查文件是否已保存
        LastModified = FileDateTime(ThisWorkbook.FullName)
    Else
        LastModified = Now() ' 未保存的文件返回当前时间,也可以改成提示文本
    End If
End Function

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:00:51