首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >VBA实战技巧28:自动关闭指定时间没有进行操作的工作簿

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

作者头像
fanjy
发布2021-07-12 16:17:44
发布2021-07-12 16:17:44
3.1K0
举报
文章被收录于专栏:完美Excel完美Excel

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档