excel - 1 分钟事件后的 VBA Excel 应用程序 OnTime

标签 excel vba ontime

我已经创建了一个文件并有一个代码,无论我在 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/

相关文章:

Excel vba简单文本框插入子错误

vba - Excel vba 用户名/密码查找

xml - 如何使用 VBA 将数据从 XML 文件提取到 Excel 工作表

bug-tracking - FogBugz 与 OnTime 的比较

excel - OnTime 时间少于 1 秒而不会变得无响应

excel - 查找同一列/行中的第一个空单元格

excel - 动态更改下拉列表中一个月的天数

vba - 工作簿中所有工作表的循环不起作用

vba - 将多个超链接添加到 PowerPoint 形状

excel - 使用 OnTime 宏停止潜艇的按钮不会停止