[Application.ontime在以“安全模式”打开另一个工作簿时失败]]

问题描述 投票:1回答:1

我在这里撕头发...

我有一个Excel工作表,用于注册在不同任务上使用的时间。在工作表中,我启动一个“时钟”,该时钟在执行任务时一直运行,以10秒为增量。只要没有打开处于安全模式的其他工作簿(即从Web位置打开,并且未激活“启用编辑”),此方法就可以正常工作。如果是这种情况,计时器将失败并显示...

"Run-time error '1004':
Method 'OnTime' of object '_Application' failed.

和...

  • 如果处于安全模式的工作簿是“最后一个具有焦点的工作簿”,则在转到计算机上的另一个窗口之前,宏将失败。
  • 如果包含宏的工作簿是最后一个具有焦点的Excel窗口,则在转到计算机上的另一个窗口之前,即使还有另一个工作簿在“安全模式”下打开,该宏也不会失败。
  • 如果另一个工作簿是“具有焦点的最后一个excel”,但是在“启用编辑”模式下打开,则宏不会失败。
  • 我的代码:

Dim TimerActive As Boolean

Sub Start_Timer()
    TimerActive = True
    Timer
End Sub

Sub Stop_Timer()
    TimerActive = False
End Sub

Sub Timer()
    If TimerActive Then
        ThisWorkbook.Sheets("Register_time").Range("InputTimeTo").Value = Time
        ThisWorkbook.Application.OnTime Now() + TimeValue("00:00:10"), "Timer"
    End If
End Sub

当宏失败时,调试器突出显示该行:

ThisWorkbook.Application.OnTime Now() + TimeValue("00:00:10"), "Timer"

我想以某种方式解决此问题,以使该宏在“后台”工作,即使另一个工作簿具有焦点(是否有安全模式),也可能有一个完全不同的程序具有焦点。

注意:当时钟需要更新时,我无法获得以宏增益为焦点的工作簿,因为这意味着我将退出正在使用的程序。但是,如果没有更新时钟,那没关系,直到我选择将焦点重新设置到显示时钟的工作表上。]

任何人?

我在这里扯头发...我有一个Excel工作表,用于记录在不同任务上花费的时间。在工作表中,我启动一个“时钟”,该时钟在我处理任务时一直运行,在...

excel vba
1个回答
0
投票

尝试在“ Ontime”行之前键入此代码:

关于错误恢复下一页

© www.soinside.com 2019 - 2024. All rights reserved.