Excel VBA - Application.OnTime无法正常工作,WScript.Shell.PopUp计时器无法正常工作

时间:2015-07-20 17:29:57

标签: excel vba excel-vba popup wsh

我有一个自动化任务,可以在每天早上的特定时间打开Excel并运行一些VBA代码。如果用户打开了excel文件,我想警告他们,文件会在一段时间后通过弹出消息自动关闭,然后不久之后让Excel自动保存并退出。如果用户远离他们的计算机,我希望弹出消息在5秒后自动关闭,因此它不会冻结我的SaveExit子例程。

弹出消息正在显示,但不会自动关闭。 只有单击“确定”才会关闭。这阻止了SaveExit例程的运行。

Microsoft Excel Objects下的This Workbook

Private Sub Workbook_Open()
    ThisWorkbook.Worksheets("Pull Data").Activate
    Application.OnTime TimeValue("1:00:00 AM"), "CloseWarn", TimeValue("1:02:00 AM")
    Application.OnTime TimeValue("1:03:00 AM"), "SaveExit", TimeValue("1:04:00 AM")
End Sub

名为module的{​​{1}}:

autoclose

如何在特定时间显示弹出警告消息,如果没有用户输入则关闭?

1 个答案:

答案 0 :(得分:0)

想出来!谢谢@Evan指出我正确的方向。我不明白为什么,但是当在Application.OnTime下使用Workbook_Open命令时,如果我确定例程所在的模块,事情会更好。在我想出这个之后,我将我的潜艇移到ThisWorkbook以简化我的代码。我创建了一个名为userform的{​​{1}},通知用户Excel即将自动关闭。用户表单在5秒后关闭,或者在用户单击“确定”时关闭。

CloseAlert下的Microsoft Excel Objects

ThisWorkbook

在名为Private Sub Workbook_Open() ThisWorkbook.Worksheets("Pull Data").Activate Application.OnTime TimeValue("16:08:00"), "ThisWorkbook.ShowCloseAlert" Application.OnTime TimeValue("16:09:00"), "ThisWorkbook.SaveExit" End Sub Private Sub ShowCloseAlert() CloseAlert.Show vbModeless Application.OnTime Now + TimeValue("00:00:05"), "Unloadit" End Sub Sub SaveExit() Application.DisplayAlerts = False With ThisWorkbook .Save Application.Quit End With End Sub 的单独module中:

unload_CloseAlert