Global saveTimer As Variant
Sub Save1()
ThisWorkbook.Save
saveTimer = Now + TimeValue("00:00:30")
Application.OnTime saveTimer, "Save1"
End Sub
工作簿模块:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnTime saveTimer, "Save1", , False
End Sub
Private Sub Workbook_Open()
saveTimer = Now + TimeValue("00:00:30")
Application.OnTime saveTimer, "Save1"
End Sub
1条答案
按热度按时间zbdgwd5y1#
我不确定这个特定的问题是否是导致您遇到错误的原因,但是您实现的自动保存功能中存在一个问题。
Application.OnTime
是你可以告诉你如何称呼它;Application
对象的方法。这意味着它不是从任何特定的工作簿/工作表中调用,而是从应用程序Excel本身调用。这意味着只要Excel打开,它就会继续运行。因此,如果您打开了第二个(不相关的)工作簿,然后关闭了实现了自动保存功能的工作簿,则自动保存的代码将继续运行。如果你现在再次打开自动保存的工作簿,你会突然有2个自动保存循环在运行。所以每30秒自动保存2次。再做一次,你会有3个自动保存循环同时运行。
autoSave循环仅在完全关闭Excel时终止。
此问题可以通过在关闭工作簿之前终止OnTime调用来解决。您可以按如下所示执行此操作:
正常模块:
工作簿模块:
使用此代码,如果关闭工作簿,当前运行的
OnTime
调用将终止。