2

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

Í假设我会Application.OnTime定期检查用户是否处于活动状态。但是我应该处理哪些事件来查看用户是否“活跃”(即对工作簿做了什么 - 任何事情)?

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

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

LastActivityTime = Now

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

更新:我已经通过处理Workbook_SheetActivate,Workbook_SheetSelectionChangeWorkbook_WindowActivate. 实际上,这可能就足够了。

4

3 回答 3

2

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

于 2009-08-25T11:17:01.033 回答
1

我只能看到两种解决方案——要么处理 Application 对象具有的每个单个事件,要么使用GetLastInputInfo函数。

于 2008-10-04T14:16:14.260 回答
0

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

于 2008-10-04T14:00:40.503 回答