如何检测Excel工作簿中的用户不活动

时间:2008-10-04 13:46:28

标签: excel vba excel-vba timer user-inactivity

我希望在一段时间不活动(隐藏/保护一些工作表)后在Excel工作簿宏中执行操作。实现这一目标的最佳/最简单方法是什么?

假设我将使用Application.OnTime定期检查用户是否处于活动状态。但是我应该处理什么事件以查看用户是否“活跃”(即,是否已经做了某些事情 - 使用工作簿)?

澄清:我想检测所有活动,而不仅仅是更改。即包括鼠标点击,选择,复制,使用键盘导航,更改工作表,......

我假设当发生代表用户活动的UI事件时,我将设置一个变量:

LastActivityTime = Now

并且Application.OnTime运行的宏将检查此变量以查看用户最近是否处于活动状态。设置此变量需要处理哪些事件(SheetChange除外)?我有点希望会有KeyUpMouseUp个事件,这两个可能已经足够了。

更新:我已通过处理Workbook_SheetActivateWorkbook_SheetSelectionChangeWorkbook_WindowActivate来实现此目的。实际上这可能已经足够了。

3 个答案:

答案 0 :(得分:2)

我已经通过处理Workbook_SheetActivate,Workbook_SheetSelectionChange和Workbook_WindowActivate来实现了这一点。实际上这可能已经足够了。

答案 1 :(得分:1)

我只能看到两个解决方案 - 处理Application对象具有的evary单个事件或使用GetLastInputInfo函数。

答案 2 :(得分:0)

一种简单的方法是将工作簿的内容与上次检查的内容进行比较。我相信将它与Application.OnTime相结合将解决您的问题。