1

我有一个文件,其中有几个带有“上次更改:”字段的表格。如果对该表进行了任何更改,则该字段应更新为当前日期。

我实现了一个宏,它做了它应该做的,但不幸的是它禁用了非常烦人的“反向”(Strg + Z)功能。因此,我编辑了宏,使反向功能再次起作用。我的宏现在看起来像这样:

Option Explicit
Public Merker

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not ThisWorkbook.ReadOnly Then
        Application.OnUndo "Rev. Change", "Wiederherstellen"
        Merker = Cells(3, 2)
        Cells(3, 2) = Date
    End If
End Sub

Sub Wiederherstellen()
    Cells(3, 2) = Merker
End Sub

当我应用此宏时,一旦我对文档进行更改,Excel 就会崩溃。我的代码中有无效的东西吗?我真的很想知道,因为没有错误消息或错误行为,只有应用程序崩溃。这种崩溃每次都可靠地发生。

谢谢你的帮助!

4

1 回答 1

5

您的事件可能会在无限循环中调用自身。尝试禁用事件以停止代码在此行上重新调用自身Cells(3, 2) = Date

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not ThisWorkbook.ReadOnly Then
    Application.EnableEvents = False
        Application.OnUndo "Rev. Change", "Wiederherstellen"
        Merker = Cells(3, 2)
        Cells(3, 2) = Date
    Application.EnableEvents = True
    End If
End Sub
于 2013-03-21T12:08:24.447 回答