金伯利(Kimberly)想知道她是否可以使用公式将工作簿的上次保存日期放入单元格中。即使她每天打开工作簿,也只希望每次选择保存时都更新日期。

没有公式可以做到; Excel没有本机功能。但是,您可以创建一个简单的宏,该宏将在您保存工作簿时将日期值粘贴到单元格中。这基于BeforeSave事件,该事件属于ThisWorkbook对象:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _   Cancel As Boolean)



Sheets(1).Range("A1").Value = Now()

End Sub

此宏将日期(实际上是Now函数返回的值)放入工作簿中第一个工作表的单元格A1中。该单元格应在Excel中格式化为所需的任何格式。此宏有一个潜在的缺点-如果您使用“另存为”(以其他名称保存工作簿),然后选择取消保存,则日期仍会更新,因为它是在保存之前进行的-这意味着它已经保存了就像Excel开始保存工作簿一样,实际上不是在保存工作簿之后。

应当注意,Excel还包含一个AfterSave事件,您可能会想使用它来更新信息。不幸的是,它也有一些漏洞,并且没有比BeforeSave事件更简单的方法。

如果愿意,可以使用稍微不同的基于宏的方法。

这依赖于常规宏,而不是事件处理程序:

Function LastModified() As Date     Application.Volatile     LastModified = ThisWorkbook.BuiltinDocumentProperties("Last Save Time")

End Function

在希望日期显示的任何单元格中,都可以通过以下方式调用宏:

=LastModified()

该公式返回工作簿的上次保存日期和时间,您可以按任何需要的方式对其进行格式化。由于该函数被标记为易失性,因此无论何时重新计算工作表,该函数都会不断更新。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本提示(13575)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。