2012-06-22 6 views
0

Вот код, который у меня есть, он теоретически работает. Проблема в том, что когда я печатаю или редактирую лист, рабочий лист сохраняет и закрывает меня.Закройте книгу, если в Excel нет активности

Так оно работает, просто он не сбрасывает таймер во время работы в книге.

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 

Теперь это внутри ThisWorkbook, полагая, что оно должно охватывать все. Я что-то упускаю? Таймер, очевидно, не сбрасывается, когда это должно быть.

+0

насколько я помню, это делает его таким образом, код работает, и EndTime, когда оно призвано остановить. –

+0

Да, трудно отлаживать этот код, не зная, что это. Есть ли еще код, который согласуется с этим? Трудно диагностировать, потому что RunTime не будет компилироваться, как написано выше. Кроме того, у вас есть явно заданный параметр, но вы не объявляете свою переменную EndTime. –

+0

Вот и весь код. Вот почему я прошу о помощи. –

ответ

0

Насколько я могу видеть, единственные причины, почему вызов, чтобы отменить расписание не работает может быть:

  • имя процедуры отличается (CloseWB) или
  • EndTime изменилось с тех пор задача была изначально запланирована или
  • RunTime делает то, что делает рабочую книгу близко ...
Смежные вопросы