我有一个excel文件,其中有几个表格,其中包含“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会在对文档进行更改后立即崩溃。 我的代码中有无效的东西吗?我真的很想知道,因为没有错误消息或错误的行为,只有应用程序崩溃。每次都会可靠地发生这种崩溃。
感谢您的帮助!
答案 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