代码之家  ›  专栏  ›  技术社区  ›  to StackOverflow

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

  •  2
  • to StackOverflow  · 技术社区  · 16 年前

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

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

    澄清:我想检测 全部的 活动,而不仅仅是变化。例如,包括鼠标单击、选择、复制、使用键盘导航、更改工作表等。

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

    LastActivityTime = Now
    

    宏由运行 应用程序.ontime 将检查此变量以查看用户最近是否处于活动状态。哪些事件(除了 SheetChange )我需要处理来设置这个变量吗?我有点希望 KeyUp MouseUp 事件,这两个可能就足够了。

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

    3 回复  |  直到 9 年前
        1
  •  2
  •   to StackOverflow    15 年前

    我通过处理工作簿“SheetActivate”、“Workbook”“SheetSelectionChange”和“Workbook”“WindowActivate”来实现此功能。实际上,这可能就足够了。

        2
  •  1
  •   GSerg    16 年前

    我只能看到两个解决方案——要么处理应用程序对象拥有或使用的evary单事件 GetLastInputInfo 功能。

        3
  •  0
  •   Martin08    16 年前

    一个简单的方法是将工作簿的内容与上次检查的内容进行比较。我相信把这个和application.ontime结合起来可以解决您的问题。