Excel VBA - Application.OnTime 不工作并且 WScript.Shell.PopUp 计时器不工作

Excel VBA - Application.OnTime not working and WScript.Shell.PopUp timer not working

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

弹出消息正在出现,但不会自动关闭。 只有在单击 "OK" 时才会关闭。这会阻止 SaveExit 例程 运行ning。

This Workbook 中的 Microsoft Excel Objects 下:

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 中调用 autoclose:

Sub SaveExit()
Application.DisplayAlerts = False
With ThisWorkbook
    .Save
    Application.Quit
End With
End Sub

Sub CloseWarn()
Select Case CreateObject("WScript.Shell").PopUp("closing soon", 5, "Warning")
    Case 1, -1
End Select
End Sub

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

想通了!感谢@Evan 为我指明了正确的方向。我不明白为什么,但是当在 Workbook_Open 下使用 Application.OnTime 命令时,如果我识别例程所在的模块,事情会更好。在我弄清楚这一点后,我将我的潜艇移动到 ThisWorkbook 以简化我的代码。我创建了一个名为 CloseAlertuserform,通知用户 Excel 即将自动关闭。用户窗体在 5 秒后或在用户单击 "OK".

后关闭

ThisWorkbook 中的 Microsoft Excel Objects 下:

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

在一个名为 unload_CloseAlert 的单独 module 中:

Public Sub Unloadit()
unload CloseAlert
End Sub