如何在Excel工作簿中检测用户不活动
我想在一段时间的不活动之后在Excel工作簿macros中执行一个操作(隐藏/保护一些工作表)。 什么是最好/最简单的方法来实现这一点?
假设我将使用Application.OnTime
来定期检查用户是否已经激活。 但是,我应该处理哪些事件以查看用户是否“活跃”(即,与工作簿有什么关系)?
澄清:我想检测所有活动,而不仅仅是改变。 即包括鼠标点击,select,复制,键盘导航,更改工作表,…
我假设当UI事件发生,代表用户活动,我将设置一个variables,因此:
LastActivityTime = Now
而由Application.OnTime
运行的macros将检查此variables以查看用户最近是否处于活动状态。 哪些事件(除了SheetChange
)我需要处理设置这个variables? 我希望有KeyUp
和MouseUp
事件,这两个可能已经足够了。
更新:我已经通过处理Workbook_SheetActivate
, Workbook_SheetSelectionChange
和Workbook_WindowActivate
实现了这一点。 实际上这可能就够了。
我通过处理Workbook_SheetActivate,Workbook_SheetSelectionChange和Workbook_WindowActivate来实现这个function。 实际上这可能就够了。
我只能看到两个解决scheme – 处理Application对象具有的evary单个事件或使用GetLastInputInfo函数。
一个简单的方法是将工作簿的内容与上次检查的内容进行比较。 我相信这与Application.OnTime将解决您的关注。