自文件打开后经过设定时间后弹出消息框

问题描述 投票:0回答:0

场景是,大约有二十个团队成员轮流打开和编辑一个非共享的 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
timer popup msgbox
© www.soinside.com 2019 - 2024. All rights reserved.