[英]VBA background code to see how long the spreadsheet has been open
我想在电子表格中写一些 VBA 以便它评估电子表格打开了多长时间,一旦达到某个时间点(比如一个小时),它就会警告用户它将在 15 分钟内自动关闭。
有没有人做过这样的事情或看到它打开? 我有一个名为 Reference 的选项卡,当他们打开它时,我可以在其中放置一段自动打开的代码来记录,但我希望电子表格以特定的时间间隔自动检查工作表打开的时间。
这样做的目的是我想强制关闭用户不小心打开电子表格的地方,因此重要的是不要根据用户输入对其进行评估。 注意 - 我不在乎他们是否失去工作,我只想关闭电子表格。
非常感谢任何帮助。
要安排例程的调用,请使用Application.OnTime
。 为确保例程安排在“打开后一小时”,请创建一个 Workbook-Open 子(在 ThisWorkbook-Module 中)并将以下内容放入其中:
Private Sub Workbook_Open()
Application.OnTime DateAdd("h", 1, Now), InformUser
End Sub
这将在工作簿打开一小时后调用 Sub InformUser
。 在此例程中,您可以添加另一个对OnTime
的调用。 但是,您需要注意如何通知用户。 如果您简单地使用MsgBox
但用户对此没有反应,则 MsgBox-Window 保持活动状态,并且由于它是模态 window,代码将不会继续运行,并且永远不会触发OnTime
过程。 创建带有 TimeOut 的 MsgBox 并不容易(请参阅显示具有超时值的消息框),因此可以创建一个简单的表单并将其显示为非模态。
Sub InformUser()
InfoForm.Show modal:=False
Application.OnTime DateAdd("n", 15, Now), ShutDown ' "n": Minutes ("m" stands for months)
End Sub
Sub ShutDown
ThisWorkbook.Close SaveChanges:=True ' Or "False" if you don't want to save - use on your own risk...
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.