我完全丢失,所以任何帮助将不胜感激。
我正在尝试取消打开工作簿时触发的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
答案 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)并且一切正常:)
将此标记为自己解决了哈哈。