Приложение VBA Excel OnTime после 1 минуты активности - PullRequest
0 голосов
/ 14 октября 2018

Я создал файл и у меня есть код, который через 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 Ответ

0 голосов
/ 14 октября 2018

В модуле ThisWorkbook вы можете сделать что-то вроде этого:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    stop_timer
    start_timer  
End Sub

Это сбросит таймер всякий раз, когда вы меняете выбор на любом листе в рабочей книге.

...