2016-07-26 79 views
0

我用下面的代碼來檢查,如果只讀工作簿中的用戶查看更新後:VBA:停止遞歸函數重新打開工作簿,工作簿接近

Function NewVersion() As Boolean 

    If a <> b Then Flag = True: Exit Function 

    Application.OnTime Now + TimeValue("00:00:05"), "NewVersion" 

End Function 

但是,每當我關閉工作簿,它重新打開(大概是因爲NewVersion被加載到內存中並設置爲在5秒內運行?)

如何防止這種情況發生?

我已經嘗試了各種各樣的東西,但沒有運氣到目前爲止!

回答

1

如果使用Application.OnTime的Schedule參數,創建一個公共變量以跟蹤下一次您的宏應該觸發並取消的時間。

Public ScheduledTime As Date 

Function NewVersion() As Boolean 
    ScheduledTime = Now + TimeValue("00:00:05") 

    Application.OnTime ScheduledTime, "NewVersion" 

End Function 

Private Sub Workbook_BeforeClose(Cancel As Boolean) 
    On Error Resume Next 
    Application.OnTime ScheduledTime, "NewVersion", Schedule:=False 
End Sub 
+0

精彩@Thomas,感謝您的快速回答! – user2048265