レムナントが示唆したように、最善のアプローチは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枚以上の)シートがある場合は、プログラムでコードを追加することをお勧めします。このコードを含む別のモジュールをブックに追加し、1回実行します。
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」イベントがすべてのシートのコードセクションに追加されます。