Одной из возможностей является использование события Workbook.SheetChange и Application.OnTime
.Вам также понадобится переменная Public
, ScheduledTime
в приведенном ниже примере.
Каждый раз, когда изменяется любой (не диаграммный) лист (например, путем ввода данных):
- Любое ранее запланированное сохранение, если оно все еще находится в одноминутном окне, отменяется.
- Новое сохранение запланировано на одну минуту.
Так что-то вроде следующего:
В модуле кода ThisWorkbook
:
Option Explicit
Public ScheduledTime
Private Sub Workbook_SheetChange(ByVal Sh As Object, _
ByVal Target As Range)
On Error Resume Next
Application.OnTime EarliestTime:=ScheduledTime, Procedure:="SaveTheFile", Schedule:=False
On Error GoTo 0
ScheduledTime = Now + TimeValue("00:01:00")
Application.OnTime EarliestTime:=ScheduledTime, Procedure:="SaveTheFile"
End Sub
В модуле кода обычного кода:
Public Sub SaveTheFile()
ThisWorkbook.Save
End Sub
Вы можете простотакже используйте событие Worksheet Change , если вы хотите ограничить это для определенного листа.