2013-03-21 105 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