您好我有一个代码,理想情况下应该存储上次修改工作簿中每个工作表的时间。但是,我实现的这段代码看起来非常不一致和不准确。有时它会存储我刚刚访问过页面的时间,有时代码在我编辑版本后不会刷新。此外,我在单元格A1上有一个运行时钟,因此它也会重写写入的单元格。是否有任何改进或替代代码?谢谢。
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If ActiveSheet.Name = "Index" Then Exit Sub
Application.EnableEvents = 0
i = ActiveSheet.Index
With Sheets("Index")
.Cells(i, 1) = ActiveSheet.Name
.Cells(i, 2) = Now
End With
Application.EnableEvents = 1
End Sub
答案 0 :(得分:2)
如果您不使用ActiveSheet
,而是使用Sh
参数,那就更好了:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Name = "Index" Then Exit Sub
i = Sh.Index
With Sheets("Index")
.Cells(i + 1, 1) = Sh.Name
.Cells(i + 1, 2) = Now
End With
End Sub
从技术上讲,您不需要禁用事件,因为Exit Sub
会阻止任何循环。