我创建了一个用户定义函数来做到这一点,但它没有经过完全测试。
使用此功能前注意两点:
1-此功能在您保存文档 (ctrl+s) 或更改其他单元格后显示结果
2-只更改目标单元格的地址,从不更改此函数中的其他参数
事实上,我们在函数参数中记录目标单元格的最后一个值
按着这些次序 :
1-打开 MSExcel 并制作新的“.xlsm”文件
2-按 Alt+F11 打开 VBA 窗口
3-制作新模块
4-将此代码复制到Module1:
Public Function LogDate(CellAddress As String, OldValue As String, DisplayDate As String) As String
Dim CellValue As String
CellValue = Range(CellAddress).Value
If CellValue = OldValue Then
LogDate = DisplayDate
Else
Dim Address As String
Address = Replace(CellAddress, "$", "")
DisplayDate = Now
Evaluate "ChangeFormula(""" + Application.Caller.Address(False, False) + """ , """ + Address + """ , """ + CellValue + """ , """ + DisplayDate + """)"
LogDate = DisplayDate
End If
End Function
Private Sub ChangeFormula(CurrentCellAddress As String, Address As String, CellValue As String, DisplayDate As String)
Range(CurrentCellAddress).Formula = "=LogDate(CELL(""address""," & Address & "),""" & CellValue & """,""" & DisplayDate & """)"
End Sub
4-点击单元格“A2”并在其中写下这个公式:
=LogDate(CELL("address",A1),"","")
目标单元格地址是“A1”不要改变除“A1”以外的任何参数
现在当您更改“A1”单元格值,并保存文档(ctrl+s)或更改其他单元格时,“A2”显示“A1”的日期和时间会发生变化。