Excel工作表的上次修改编码不一致

时间:2015-09-28 03:30:36

标签: excel vba excel-vba

您好我有一个代码,理想情况下应该存储上次修改工作簿中每个工作表的时间。但是,我实现的这段代码看起来非常不一致和不准确。有时它会存储我刚刚访问过页面的时间,有时代码在我编辑版本后不会刷新。此外,我在单元格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

1 个答案:

答案 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会阻止任何循环。