VBA 数据输入后保存延迟

VBA Saving delay after data entry

VBA 这里是新手。我正在寻找一种方法,让我的 excel 文件在数据输入后延迟 1 分钟后自动保存。

例如:

User Inputs Data --> Timer Starts (1min)

5 秒过去了。

User inputs Data --> Timer Restarts (1min)

1 分钟过去了。

Excel 文件保存 - 直到用户再次开始输入数据

有什么想法吗?

一种可能性是利用 Workbook.SheetChange event and Application.OnTime。您还需要一个 Public 变量,在下面的示例中为 ScheduledTime

每次(非图表)sheet发生变化(例如通过数据输入):

  1. 任何先前安排的保存,只要它仍在一分钟内 window,都会被取消。
  2. 新的存档计划在一分钟后。

所以像下面这样:

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

如果您想将此限制为特定的 sheet,您也可以使用 Worksheet Change 事件。

我对此的看法与 BigBen 相似。

ThisWorkbook模块中:

Option Explicit

Public SnapShot As String

Private Sub Workbook_Open()
    StartTimer
End Sub

Sub StartTimer()
    If SnapShot = vbNullString Then SnapShot = Now
    If DateDiff("s", SnapShot, VBA.CStr(Now)) >= 10 Then ThisWorkbook.Save
    RestartTimer
End Sub

Sub RestartTimer()
    Application.OnTime Now + TimeValue("00:00:10"), "ThisWorkbook.StartTimer"
End Sub

然后在您正在监控的工作表中:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    ThisWorkbook.SnapShot = Now
End Sub