2013-03-21 99 views
1

我有一个文件,其中我有几个表的字段为“Last change:”。如果对该表进行了任何更改,则该字段应更新为当前日期。用于更新“更改日期”的Excel宏使Excel崩溃

我实现了一个应该做它的宏,但不幸的是它禁用了非常恼人的“反向”(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

@Remou我明白你为什么重新加标签的这个,这在技术上是正确的,但很少有问题将仍然被标记[标签:VBA]如果这被广泛采用。这可能意味着这个标签应该被淘汰。就像它可能给出的Office应用程序可以自动执行其余的Office系列恕我直言,[标签:VBA]应该留下。 – brettdj 2013-03-22 01:40:47

+1

感谢您的评论。同意。 – 2013-03-25 09:10:16

回答

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 
+1

就是这样 - 解决了这个问题。非常感谢brettdj! – 2013-03-21 12:22:37