正如Remnant所建议的那样,最好的方法是利用Worksheet_Change
事件。这意味着,您需要这个VBA代码。
Private Sub Worksheet_Change(ByVal Target As Range)
With Me.PageSetup
.LeftFooter = "Last Change Time: " & Format(VBA.Time, "hh:mm:ss")
.RightFooter = "Last Change Date: " & Format(VBA.Date, "dd/mm/yy")
End With
End Sub
在你的每个工作表中,只有当你更改单元格内容时才会触发此事件,而不是更改选择,因此这可能是你想要的。
Remnant还写道,如果你有许多工作表,那么设置这个可能会很麻烦。我认为这取决于你所谓的“许多”。对于20到40个工作表,可以在几分钟内轻松地将上面的代码手动复制到每个工作表中。
如果你已经有一个工作簿和大量(比如超过40个)的工作表,则最好以编程方式添加代码。将包含此代码的单独模块添加到你的工作簿中,并运行它一次:
Option Explicit
Sub InsertCode()
Dim VBProj As Object
Dim VBComp As Object
Dim CodeMod As Object
Dim sh As Worksheet
Dim LineNum As Long
Set VBProj = ActiveWorkbook.VBProject
For Each sh In ThisWorkbook.Sheets
Set VBComp = VBProj.vbcomponents(sh.Name)
Set CodeMod = VBComp.CodeModule
With CodeMod
.DeleteLines 1, .CountOfLines
LineNum = .CreateEventProc("Change", "Worksheet")
LineNum = LineNum + 1
.InsertLines LineNum, "Me.Pagesetup.LeftFooter = ""Last Change Time: "" & Format(VBA.Time, ""hh:mm:ss"")"
.InsertLines LineNum + 1, "Me.Pagesetup.RightFooter = ""Last Change Date: "" & Format(VBA.Date, ""dd/mm/yy"")"
End With
Next
End Sub
这将把上面的“Worksheet_Change”事件添加到每个工作表的代码部分中。