我已经创建了一个文件并有一个代码,无论我在 ActiveSheets 中的哪个位置,它都会在 1 分钟后选择我在代码中指示的默认单元格。
请在下面找到我的代码:
本工作簿模块:
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 分钟。但如果我工作,我会在牢房里写,那就不行。如何更改我创建的代码以在不活动后开始我的代码的分钟倒计时?
最佳答案
在 ThisWorkbook
模块你可以做这样的事情:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
stop_timer
start_timer
End Sub
每当您更改工作簿中任何工作表上的选择时,这都会重置计时器。
关于excel - 1 分钟事件后的 VBA Excel 应用程序 OnTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52803245/