Приложение VBA Excel OnTime через 1 минуту активности
Я создал файл и у меня есть код, который через 1 минуту, независимо от того, где я нахожусь в ActiveSheets, выбирает ячейки по умолчанию, которые я указал в коде.
Пожалуйста, найдите мой код ниже:
Этот модуль Workbook:
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
stop_timer
End Sub
Private Sub Workbook_Open()
start_timer
End Sub
Обычный модуль:
Option Explicit
Public RunWhen As Double
Public Sub start_timer()
'active the code after 1 minute
RunWhen = Now + TimeValue("00:01:00")
Application.OnTime RunWhen, "TimerRoutine"
End Sub
'Hier the code that must run every 1 minute and what he has to do'
Public Sub TimerRoutine()
Select Case LCase(ActiveSheet.Name)
Case "intervento spinale"
ActiveSheet.Range("J97").Select
Case "stroke"
ActiveSheet.Range("J131").Select
Case "infiltrazione"
ActiveSheet.Range("J67").Select
Case "diagnostica"
ActiveSheet.Range("J97").Select
Case "embo"
ActiveSheet.Range("J136").Select
Case "epatobiliare"
ActiveSheet.Range("J88").Select
Case "body"
ActiveSheet.Range("J151").Select
End Select
start_timer ' Reschedule the procedure
End Sub
Public Sub stop_timer()
Application.OnTime RunWhen, "TimerRoutine", , False
End Sub
Моя проблема в том, что этот код всегда работает, даже если я работаю над листами. через 1 минуту он автоматически переходит в ячейку, обозначенную кодом. Я хотел бы, если я работаю над листами, код не начинает считать 1 минуту.
Только если я остановлюсь и останусь на месте в течение 1 минуты после выполнения кода. Но если я работаю, я пишу в клетку, то нет. Как я могу изменить свой код, созданный, чтобы после бездействия получить отсчет минут, чтобы запустить мой код?
1 ответ
В ThisWorkbook
Модуль вы можете сделать что-то вроде этого:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
stop_timer
start_timer
End Sub
Это будет сбрасывать таймер всякий раз, когда вы меняете выбор на любом листе в рабочей книге.