Application.Ontime取消失败,对象'应用'的方法'ONTIME'

时间:2016-02-10 03:19:14

标签: excel vba events runtime-error schedule

完全丢失,所以任何帮助将不胜感激。

我正在尝试取消打开工作簿时触发的2个预定事件,并使用Application.Ontime方法重复。

我知道要终止OnTime计划循环,您必须提供计划运行的确切时间,并且具有多个Application.OnTime任务需要多个变量。 这就是为什么我设置了两个公共变量(Options Explicit下面的文档的标题):

$user = Auth::user;
$tasks = $user->tasks;

调度程序使用这些变量,一切都正常,因为代码每分钟运行一次。

dTime 的值在 TaskTracker 功能中设置为:

Dim dTime as Date
Dim dTime2 as Date

dTime2 的值在 Autoclear 功能中设置为:

dTime = Now() + TimeValue("00:01:00")
Application.OnTime dTime, "TaskTracker", , True

尽管如此,当我尝试在模块末尾运行该函数时,我得到一个方法'ONTIME'的Object'Application'错误消息:

dTime2 = Now() + TimeValue("00:01:00")
Application.OnTime dTime, "AutoClear", , True

这是我绝对不知道出了什么问题的地方。触发调试将我带到每个过程取消尝试的OnTime部分。

以下是包含这些元素的脚本。希望这能让你们了解为什么这些活动无法取消。

Function AutoDeactivate()
Application.OnTime EarliestTime:=dTime, Procedure:="TaskTracker", _
    Schedule:=False
Application.OnTime EarliestTime:=dTime2, Procedure:="AutoClear", _
    Schedule:=False
End Function

1 个答案:

答案 0 :(得分:1)

看起来这是一个设置错误!

Option Explicit
Dim dTime As Date
Dim dTime2 As Date

Application.OnTime dTime, "TaskTracker", , True
Application.OnTime dTime2, "AutoClear", , True

当工作簿关闭时调用AutoDeactivation函数确实按预期工作!

Function AutoDeactivate()
On Error Resume Next
Application.OnTime EarliestTime:=dTime, Procedure:="TaskTracker", _
Schedule:=False
Application.OnTime EarliestTime:=dTime2, Procedure:="AutoClear", _
Schedule:=False
End Function

Workbook_BeforeClose:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call AutoDeactivate
End Sub

发生的事情非常愚蠢。我在工作中取消事件时遇到了问题,所以我把Excel Sheet带回家并对上面找到的修复进行了编码。然而,它仍然没有奏效。不是因为它有错误,而是因为我在家里没有Outlook! :P

没有Outlook应用程序阻止事件在运行一次后被重新安排(导致自动解除的ActiveX错误消息)。

因此,只要我将此脚本恢复工作(安装了Outlook)并且一切正常:)

将此标记为自己解决了哈哈。