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

我想在一段时间的不活动之后在Excel工作簿macros中执行一个操作(隐藏/保护一些工作表)。 什么是最好/最简单的方法来实现这一点?

假设我将使用Application.OnTime来定期检查用户是否已经激活。 但是,我应该处理哪些事件以查看用户是否“活跃”(即,与工作簿有什么关系)?

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

我假设当UI事件发生,代表用户活动,我将设置一个variables,因此:

 LastActivityTime = Now 

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

更新:我已经通过处理Workbook_SheetActivateWorkbook_SheetSelectionChangeWorkbook_WindowActivate实现了这一点。 实际上这可能就够了。

我通过处理Workbook_SheetActivate,Workbook_SheetSelectionChange和Workbook_WindowActivate来实现这个function。 实际上这可能就够了。

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

一个简单的方法是将工作簿的内容与上次检查的内容进行比较。 我相信这与Application.OnTime将解决您的关注。