2016-07-26 131 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