如果Excel中没有活动,请关闭工作簿

如果Excel中没有活动,请关闭工作簿,excel,vba,Excel,Vba,这是我的代码,理论上是有效的。我的问题是,当我键入或编辑工作表时,工作表会保存并关闭 所以它可以工作,只是当我在工作簿中工作时它根本不会重置计时器 Option Explicit Private Sub Workbook_Open() EndTime = Now + TimeValue("00:05:00") RunTime End Sub Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As

这是我的代码,理论上是有效的。我的问题是,当我键入或编辑工作表时,工作表会保存并关闭

所以它可以工作,只是当我在工作簿中工作时它根本不会重置计时器

Option Explicit
Private Sub Workbook_Open()
    EndTime = Now + TimeValue("00:05:00")
    RunTime
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If EndTime Then
        Application.OnTime _
                EarliestTime:=EndTime, _
                Procedure:="CloseWB", _
                Schedule:=False
        EndTime = Empty
    End If
    EndTime = Now + TimeValue("00:10:00")
    RunTime
End Sub

现在,这是在这个工作簿中,认为它应该包含所有内容。我错过什么了吗?计时器显然没有在应该重置的时候重置

据我所知,取消计划的唯一原因可能是:

  • 过程名称不同(CloseWB)或
  • 自任务最初计划或运行后,EndTime已更改
  • 运行时执行某些操作使工作簿关闭

据我记忆所及,它使代码能够运行,而EndTime则意味着停止。是的,在不知道这是什么的情况下很难调试此代码。是否有更多的代码与此相关?很难诊断,因为运行时不会像上面写的那样编译。另外,您已经设置了option explicit,但是您没有声明EndTime变量。这就是全部代码。这就是我寻求帮助的原因。@Scott EndTime可能是某个模块中声明的一个全局变量…Matt-从上面的注释
中可以看出,这就是全部代码。
不,这不是全部代码,我正试图解释这一点!我找到了基于@AlistairWeir链接到您的OQ的完整代码!如果你不能提供缺失的信息,那么很难提供帮助。我运行了你的原始代码,它对我有效。可能您正在CloseWB设置为运行期间键入/编辑单元格,但只有Workbook\u SheetChange事件没有触发以重置您的时间,因为Excel直到您按Enter键并实际更改某些内容后才识别该事件。