【发布时间】:2017-03-24 13:47:57
【问题描述】:
这是我第一次在这个网站上发帖,希望能得到一些帮助。我是 mrexcel 论坛的成员,并从那里的那些伟大的人那里得到了很多帮助,但无法找到我的问题的答案。在工作中,我创建了一个工作簿,允许我们通过用户表单将数据输入到不同的工作表中。我正在努力使它尽可能地对用户友好,以尝试消除尽可能多的“用户错误”。我试图避免的一个问题是,用户在轮班结束时忘记关闭工作表,并且因为当另一个用户打开文件时工作簿是只读的,所以将所有人锁定在外。因此,我有一个代码可以在 40 分钟不活动后保存并关闭工作簿。这导致的一个问题(这是一个非常小的问题,但我的一名员工已经向我提出了一个问题),每隔一段时间,巧合的是,用户将在用户表单中输入数据40 分钟不活动,工作簿将在他们有机会提交数据之前关闭。我想知道是否有人可以帮助我修改我的代码,以便当它达到 40 分钟的不活动状态时,在它保存和关闭之前,它会看到用户窗体是打开的,如果是则取消操作。这是我得到的代码。感谢您为我提供的任何帮助。
在模块 1 中:
Dim CloseTime As Date
Sub TimeSetting()
CloseTime = Now + TimeValue("00:40:00")
On Error Resume Next
Application.OnTime EarliestTime:=CloseTime, _
Procedure:="SavedAndClose", Schedule:=True
End Sub
Sub TimeStop()
On Error Resume Next
Application.OnTime EarliestTime:=CloseTime, _
Procedure:="SavedAndClose", Schedule:=False
End Sub
Sub SavedAndClose()
ActiveWorkbook.Close Savechanges:=True
End Sub
在本工作簿中:
Private Sub Workbook_Open()
Call TimeSetting
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call TimeStop
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Call TimeStop
Call TimeSetting
End Sub
【问题讨论】: