Я задал похожий вопрос вчера и получил ответ, но теперь у меня возникла другая проблема с решением, которое я нашел.
У меня есть некоторый код Excel, и он настроен на автосохранение. И это настройка для автоматического сохранения по таймеру. Я хочу иметь возможность сбрасывать этот таймер всякий раз, когда я вручную сохраняю проект, но, похоже, он не работает.
Я использую команду Workbook_BeforeSave, чтобы что-то сделать (в идеале, сбросить таймер) перед сохранением , Таким образом, если я сохраню книгу вручную, он снова запустит этот таймер.
Я попробовал что-то вроде этого:
Рабочая книга:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _
Cancel As Boolean)
Call StopTimer
End Sub
Модуль:
Public Sub StartTimer()
RunWhen = Now + TimeValue("00:00:10")
cRunWhat = "AutoSave"
Application.OnTime EarliestTime:=RunWhen, Procedure:=cRunWhat, Schedule:=True
End Sub
Public Sub StopTimer()
On Error Resume Next
Application.OnTime EarliestTime:=RunWhen, Procedure:=cRunWhat, Schedule:=False
End Sub
Но это не похоже на работу. Я даже попробовал упрощенную версию, где я запускаю таймер, а затем просто вручную запускаю StopTimer, и он не останавливает таймер.
Есть ли что-то, чего мне не хватает в том, как должна работать StopTimer () ?
Спасибо за любую помощь!
Редактировать: Решение, которое я использовал
Я смог выполнить sh, что я хотел, используя следующие методы.
В Workbook
я использовал функцию Workbook_BeforeSave (), чтобы остановить таймер после сохранения.
Private Sub Workbook_BeforeSave(ByVal SaveAsUi As Boolean, _
Cancel As Boolean)
Call StopTimer
End Sub
Это вызывает модуль StopTimer (). Это определено на уровне модуля.
Option Explicit
Public RunWhen
Public cRunWhat
Public Sub StartTimer()
RunWhen = Now + TimeValue("00:01:00")
cRunWhat = "Save"
Application.OnTime EarliestTime:=RunWhen, Procedure:=cRunWhat, Schedule:=True
End Sub
Public Sub StopTimer()
On Error Resume Next
Application.OnTime EarliestTime:=RunWhen, Procedure:=cRunWhat, Schedule:=False
StartTimer
End Sub
Теперь у меня была другая функция в книге, называемая StartTimer, а Save () была просто c функцией сохранения книги.
Основная проблема, с которой я столкнулся, была решена здесь. Но другой пост, который я сделал, также помог мне пройти через это. Linked here
Решение скопировано здесь.