用于更新“更改日期”的Excel宏使Excel崩溃

时间:2013-03-21 12:04:55

标签: excel vba excel-vba

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

我实现了一个宏,它做了它应该做的,但不幸的是它禁用了“反向”(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会在对文档进行更改后立即崩溃。 我的代码中有无效的东西吗?我真的很想知道,因为没有错误消息或错误的行为,只有应用程序崩溃。每次都会可靠地发生这种崩溃。

感谢您的帮助!

1 个答案:

答案 0 :(得分: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