我有一个自动化任务,可以在每天早上的特定时间打开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
如何在特定时间显示弹出警告消息,如果没有用户输入则关闭?
答案 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