在vb中非常新。我有一个Excel文件,它是间隔自动保存。现在我想通过使用另一个命令按钮停止这个自动保存功能... plz帮助我......他们是代码......
Private Sub AutoSave_Cmd_click()
dTime =时间+ TimeValue(" 00:00:05")'根据要求设置时间
使用应用程序
.OnTime dTime, "AutoSaveAs" .EnableEvents = False .DisplayAlerts = False ThisWorkbook.SaveAs "C:\<My File Path>\Auto_Save_MACRO.xls" .EnableEvents = True Application.EnableEvents = False
结束
End Sub
现在我的问题是什么是停止自动保存功能的代码通过&#34; Stop_Auto_Save_Cmd&#34;命令按钮?请帮助我...提前致谢...
Private Sub Stop_Auto_Save_Cmd_click()
&#39;这里的代码是什么?
End Sub
答案 0 :(得分:2)
您的代码段看起来很像找到的代码here - 区别在于我认为链接中的代码有效,而您的代码可能没有。
当我描述“工作”代码是如何工作的时候,你应该能够找出你的代码没有的原因:
Public dTime As Date
Sub AutoSaveAs()
dTime = Time + TimeValue("00:05:00")
With Application
.OnTime dTime, "AutoSaveAs"
.EnableEvents = False
.DisplayAlerts = False
ThisWorkbook.SaveAs "FilePath&NameHere(no .xls)"
.EnableEvents = True
End With
End Sub
在这里,您会看到在模块级别声明的Public
变量dTime
;它被设置为一个名为AutoSaveAs()
的例程中的合理时间(现在+5分钟),然后指示Application
(即Excel)在计时器时执行对AutoSaveAs
的另一个调用耗尽(在这个例子中,每五分钟一次)。设置“在五分钟后再次给我打电话”命令后,它会执行实际的SaveAs,并禁用警报。
要实现这一点,您需要第一次致电AutoSaveAs
;之后,它将“自称”,因为计时器将每隔五分钟关闭一次(就像你喜欢的那样,该功能会持续按下自己的贪睡按钮)。这可以在与单击“自动保存”功能的按钮相关联的代码中完成(或者可能是AutoOpen事件 - 它取决于您想要的行为):
Private Sub AutoSaveOn_Click()
AutoSaveAs
End Sub
最后,你需要一些东西来“关闭”事件循环(而不是“打盹”,在闹钟上“关闭”)。把它放在另一个(“关闭”)按钮的处理程序中:
Private Sub AutoSaveOff_Click()
Application.OnTime dTime, "AutoSaveAs", , False
End Sub
第四个参数False
表示“取消预定”。它关闭了第一次调用AutoSaveAs
时启动的“无限循环”。如果你愿意,它会拔掉闹钟。
要完成,您必须为文件关闭时添加一个处理程序 - 因为如果您关闭工作簿但Excel保持打开状态,计时器将继续运行,这将产生一个非常奇怪和烦人的错误消息。所以你需要做这样的事情:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnTime dTime, "AutoSaveAs", , False
End Sub
注意 - 我轻轻地改编了我上面给出的链接的代码,并且想要归功于原作者(Dave Hawley)的例子。我所做的就是展示如何解释它(从相似性到你所拥有的代码,我认为你已经看过同一个网站,或者至少有一份网站副本......)