VBA实战技巧28:自动关闭指定时间没有进行操作的工作簿

2021-07-12 16:17:44 浏览数 (2)

有时候,我们打开了一个工作簿,但长时间没有使用,此时,你可能想让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,供有兴趣的朋友参考。

0 人点赞