有时候,我们打开了一个工作簿,但长时间没有使用,此时,你可能想让Excel自动将其关闭。也就是说,对于某个工作簿,如果用户在指定的时间内没有进行任何操作,那么Excel会保存并关闭该工作簿。
下面的代码可以实现上述目的。
首先,在VBE中插入一个标准模块,在其中输入代码:
Public RunWhen As Double
Public Const NUM_MINUTES = 10
Public Sub SaveAndClose()
ThisWorkbook.CloseSaveChanges:=True
End Sub
你可以修改NUM_MINUTES的值,设置让工作簿在没有操作的情况下保持开启的时间。
在VBE资源管理器窗口,双击ThisWorkbook打开该模块,输入代码:
Private Sub Workbook_Open()
On Error Resume Next
Application.OnTime RunWhen, "SaveAndClose", , False
On Error GoTo 0
RunWhen =Now TimeSerial(0, NUM_MINUTES, 0)
Application.OnTime RunWhen, "SaveAndClose", , True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.OnTime RunWhen, "SaveAndClose", , False
On ErrorGoTo 0
End Sub
Private Sub Workbook_SheetChange(ByVal Sh AsObject, ByVal Target As Range)
On Error Resume Next
Application.OnTime RunWhen, "SaveAndClose", , False
On Error GoTo 0
RunWhen =Now TimeSerial(0, NUM_MINUTES, 0)
Application.OnTime RunWhen, "SaveAndClose", , True
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal ShAs Object, ByVal Target As Range)
On Error Resume Next
Application.OnTime RunWhen, "SaveAndClose", , False
On Error GoTo 0
RunWhen =Now TimeSerial(0, NUM_MINUTES, 0)
Application.OnTime RunWhen, "SaveAndClose", , True
End Sub
每当更改单元格值或更改单元格选择时,此代码都会取消并重新恢复OnTime事件。如果在指定的时间内都没有操作工作簿,那么该工作簿将自行保存并关闭。
注:本文学习整理自www.cpearson.com,供有兴趣的朋友参考。