我希望在一段时间不活动(隐藏/保护一些工作表)后在Excel工作簿宏中执行操作。实现这一目标的最佳/最简单方法是什么?
假设我将使用Application.OnTime
定期检查用户是否处于活动状态。但是我应该处理什么事件以查看用户是否“活跃”(即,是否已经做了某些事情 - 使用工作簿)?
澄清:我想检测所有活动,而不仅仅是更改。即包括鼠标点击,选择,复制,使用键盘导航,更改工作表,......
我假设当发生代表用户活动的UI事件时,我将设置一个变量:
LastActivityTime = Now
并且Application.OnTime
运行的宏将检查此变量以查看用户最近是否处于活动状态。设置此变量需要处理哪些事件(SheetChange
除外)?我有点希望会有KeyUp
和MouseUp
个事件,这两个可能已经足够了。
更新:我已通过处理Workbook_SheetActivate
,Workbook_SheetSelectionChange
和Workbook_WindowActivate
来实现此目的。实际上这可能已经足够了。
答案 0 :(得分:2)
我已经通过处理Workbook_SheetActivate,Workbook_SheetSelectionChange和Workbook_WindowActivate来实现了这一点。实际上这可能已经足够了。
答案 1 :(得分:1)
我只能看到两个解决方案 - 处理Application对象具有的evary单个事件或使用GetLastInputInfo函数。
答案 2 :(得分:0)
一种简单的方法是将工作簿的内容与上次检查的内容进行比较。我相信将它与Application.OnTime相结合将解决您的问题。