暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

完美Excel 2021-06-21
913

学习Excel技术,关注微信公众号:

excelperfect


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

undefined
欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料。

文章转载自完美Excel,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论