非アクティブな状態が一定時間続いた後、Excelブックマクロでアクションを実行したい(一部のワークシートを非表示/保護)。これを達成するための最良/最も簡単な方法は何ですか?
Application.OnTime
Íは、ユーザーがアクティブであるかどうかを定期的にチェックするために使用することを前提としています。しかし、ユーザーが「アクティブ」であるかどうか(つまり、ワークブックで何か-何か-を行っているかどうか)を確認するには、どのイベントを処理する必要がありますか?
明確化:変更だけでなく、すべてのアクティビティを検出したい。つまり、マウスクリック、選択、コピー、キーボードによるナビゲート、ワークシートの変更などが含まれます...
ユーザーアクティビティを表すUIイベントが発生した場合、次のように変数を設定すると想定しています。
LastActivityTime = Now
によって実行されるマクロは、Application.OnTime
この変数をチェックして、ユーザーが最近アクティブになっているかどうかを確認します。SheetChange
この変数を設定するには、(以外の)どのイベントを処理する必要がありますか?KeyUp
イベントがあったらいいなと思っていたのですがMouseUp
、この2つで十分だったと思います。
更新:、、およびを処理することでこれを実装しWorkbook_SheetActivate
ましWorkbook_SheetSelectionChange
たWorkbook_WindowActivate
。現実的には、これでおそらく十分です。