VBA新手在这里。我正在寻找一种方法,允许我的excel文件在输入数据1分钟后自动保存。
例如:
User Inputs Data --> Timer Starts (1min)
5秒过去。
User inputs Data --> Timer Restarts (1min)
1分钟过去。
Excel文件保存-直到用户再次开始输入数据
有什么想法吗?
答案 0 :(得分:2)
一种可能性是利用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事件。
答案 1 :(得分:0)
我对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