场景是,大约有二十个团队成员轮流打开和编辑一个非共享的 excel 文件。问题是很多时候用户会忘记长时间打开的文件,这会阻止其他人访问以进行更新。
我想要发生的是,只有当文件以所有者身份打开(不是只读)时,在文件打开 10 分钟后,我希望弹出一个“仅确定”消息框在所有打开的应用程序之上。此外,在所述消息框中单击“确定”后,我希望在另一个 10 分钟后再次出现相同的消息框,并重复此循环,直到文件最终关闭。希望这个每10分钟的弹出提醒能够让打开文件的用户及时关闭它。
我已经创建了这个计时器并弹出,一开始它似乎有效,但后来我注意到两个问题。我使用的代码如下。
首先,即使我在计时器到期之前关闭文件,即使文件已关闭,消息框仍会在计时器结束时弹出。如果文件没有打开,那么弹出窗口只是一个烦恼。
其次,我无法让弹出窗口显示在所有打开的应用程序之上。
如果有两周甚至完全不同(简单)的方法来实现我需要的任何帮助,我们将不胜感激。
粘贴在本工作簿中:
Option Explicit
Private Sub Workbook_Open()
LastActivityTime = Now()
Check_Inactivity
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
LastActivityTime = Now()
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
LastActivityTime = Now()
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
LastActivityTime = Now()
End Sub
粘贴在模块 1:
Option Explicit
Public LastActivityTime As Date
Sub Check_Inactivity()
Const Inactivity_Delay As Date = #12:00:20 AM#
If LastActivityTime + Inactivity_Delay < Now() Then
MsgBox "YOUR SHORTLIST TIME IS UP" & vbNewLine & vbNewLine & "PLEASE FINISH & CLOSE", vbExclamation + vbOKOnly + vbSystemModal, "HEY YOU"
Else
Application.OnTime LastActivityTime + Inactivity_Delay, "Check_Inactivity"
End If
End Sub