【发布时间】:2015-07-20 17:29:56
【问题描述】:
我有一个自动化任务,它会在每天早上的特定时间打开 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
在名为autoclose 的module 中:
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 我也无法使用表单。当我使用
Application.OnTime或Application.Wait在表单代码中输入unload me命令时,没有任何反应。当我尝试使用另一个子程序调用表单然后使用Application.OnTime卸载它时,它可以工作...但是当我尝试从Workbook_Open例程中的Application.OnTime命令启动该子程序时,它显示“宏不可用或未启用宏”。 -
这很有趣....逻辑似乎合理。也许尝试在表单打开而不是 workbook_open 后添加准时事件。所以在
CloseWarn()过程中添加Application.OnTime Now + TimeValue("00:00:15"), "CloseWarningForm" -
这将有助于显示您用于显示和关闭自定义表单的代码。