0

複数のユーザーがワークブックにアクセスする必要がある状況があります (すべての問題により、[ワークブックの共有] オプションの使用を避けたい)。これに対する可能な解決策は、非アクティブ状態が 15 分間続いた後にブックを自動的に閉じることであると判断しました。

また、「OK」ボタンをクリックしないとワークブックが閉じられることをユーザーに警告するメッセージを 15 分後にポップアップ表示したいと思います。ボタンをクリックすると、カウンターが最初からやり直したいと思います。理想的には、何もクリックしないと、さらに 1 分後にワークブックが自動的に閉じます。

使用したコードをオンラインで見つけました。ワークブックは指定時間後に正常に閉じますが、メッセージ ボックスをポップアップ表示する方法がわかりません。助けていただければ幸いです、ありがとう!

私が使用したコードは以下のとおりです。

モジュール 1 では:

Dim DownTime As Date

Sub SetTimer()
    DownTime = Now + TimeValue("0:15:00")
    Application.OnTime EarliestTime:=DownTime, _
      Procedure = "ShutDown", Schedule:=True
End Sub
Sub StopTimer()
    On Error Resume Next
    Application.OnTime EarliestTime:=DownTime, _
      Procedure:="ShutDown", Schedule:=False
 End Sub
Sub ShutDown()
    Application.DisplayAlerts = False
    With ThisWorkbook
        .Saved = True
        .Close
    End With
End Sub 

ThisWorkbook では:

Private Sub Workbook_Open()
    Call SetTimer
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Call StopTimer
End Sub
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
    Call StopTimer
    Call SetTimer
 End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _
  ByVal Target As Excel.Range)
    Call StopTimer
    Call SetTimer
End Sub
4

2 に答える 2

0

ShutDown以下の手順を試してください。

Sub ShutDown()
    If CreateObject("WScript.Shell").PopUp("Close Excel?", 60, "Excel", vbOKCancel + vbQuestion + vbSystemModal) = vbCancel Then
        StopTimer
        SetTimer
        Exit Sub
    End If
    Application.DisplayAlerts = False
    With ThisWorkbook
        .Saved = True
        .Close
    End With
End Sub
于 2017-01-09T10:06:08.747 に答える