当我只说1时,VBA关闭另一个工作簿

当我只说1时,VBA关闭另一个工作簿,vba,excel,Vba,Excel,我在网上找到的一个代码中遇到了一个奇怪的小故障。如果我打开了两个不同的电子表格,一个里面有此代码,另一个可能根本没有宏,我在指定的时间内(就像我在宏中允许的时间一样)将其单独放置,那么包含宏的电子表格将关闭,在给定的时间后,另一个电子表格也将关闭。为什么会发生这种情况 单元1: Dim DownTime As Date Sub SetTimer() DownTime = Now + TimeValue("00:00:20") Application.OnTime Earlies

我在网上找到的一个代码中遇到了一个奇怪的小故障。如果我打开了两个不同的电子表格,一个里面有此代码,另一个可能根本没有宏,我在指定的时间内(就像我在宏中允许的时间一样)将其单独放置,那么包含宏的电子表格将关闭,在给定的时间后,另一个电子表格也将关闭。为什么会发生这种情况

单元1:

Dim DownTime As Date

Sub SetTimer()
    DownTime = Now + TimeValue("00:00:20")
    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
    Call ExampleToSaveWorkbook
    With ThisWorkbook
        .Saved = True
        .Close
    End With
End Sub

Sub ExampleToSaveWorkbook()
    'Saving the Workbook
    bnam = ActiveWorkbook.Name
    filenm = "S:\Economics\GTAA\dailyPM\excelfiles\backups\" & bnam
    ActiveWorkbook.SaveAs filenm
End Sub
此工作簿

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

为什么要关闭多个包含宏的工作簿?

关闭
子调用
示例保存工作簿
,关闭活动工作簿。

Shutdown
的其余部分将继续关闭
ThisWorkBook
对象。

您正在从应用程序对象调用Shutdown,因此,如果只有一个Excel实例处于活动状态,并且打开了两个工作簿,则调用Shutdown将同时关闭两个工作簿并退出Excel。@Sorceri感谢您的帮助,但它不仅仅是两本有一个实例的工作簿。我有一个实例有4或5个工作簿,但它只关闭2个,然后停止