Excel VBA如何处理同时运行的两个计划函数?

Excel VBA如何处理同时运行的两个计划函数?,excel,vba,scheduled-tasks,Excel,Vba,Scheduled Tasks,我刚刚意识到我在两个不同的excel工作表上有两个宏,它们计划在一天中的特定时间运行。它们在1130年重叠,旨在捕捉当时的市场事件。其中一个大约需要10秒,而另一个大约需要1分钟。两者都包含某种形式的复制和粘贴。重要的是,我要在1130准确地获得信息,这样延迟就不太理想了 其中一个宏是通过Application.Ontime调度的,另一个是sheet.calculate函数的一部分 我想知道VBA是如何处理这个问题的?它会一直运行宏,然后开始第二个宏,还是同时尝试运行宏,导致复制/粘贴无法正常工

我刚刚意识到我在两个不同的excel工作表上有两个宏,它们计划在一天中的特定时间运行。它们在1130年重叠,旨在捕捉当时的市场事件。其中一个大约需要10秒,而另一个大约需要1分钟。两者都包含某种形式的复制和粘贴。重要的是,我要在1130准确地获得信息,这样延迟就不太理想了

其中一个宏是通过Application.Ontime调度的,另一个是sheet.calculate函数的一部分


我想知道VBA是如何处理这个问题的?它会一直运行宏,然后开始第二个宏,还是同时尝试运行宏,导致复制/粘贴无法正常工作

VBA是单线程的,所以它不会同时运行它们很酷-你知道它如何决定先运行哪个吗?你的问题不是很清楚。您在问题的标题中谈到了两个调度函数,但随后说“其中一个宏是通过Application.Ontime调度的,另一个是worker.calculate函数的一部分”——这表明这两个函数中只有一个是调度的(另一个函数的触发器未指定)。默认情况下,
Application.OnTime
将按计划或尽快(Excel处于就绪模式时)运行该过程。很抱歉,第二个过程也将始终在1130时触发。@rickmanalexander,而C#或VB.NET提供了多线程框架,对COM对象的并发访问将抛出
COMException
left&right。COM和.NET具有完全不同的线程模型,因此.NET线程需要同步。是的,.NET可以做MT,但是.NET/COM Interop+MT=trouble.VBA是单线程的,所以它不会同时运行它们。很酷-你知道它如何决定先运行哪个吗?你的问题不是很清楚。您在问题的标题中谈到了两个调度函数,但随后说“其中一个宏是通过Application.Ontime调度的,另一个是worker.calculate函数的一部分”——这表明这两个函数中只有一个是调度的(另一个函数的触发器未指定)。默认情况下,
Application.OnTime
将按计划或尽快(Excel处于就绪模式时)运行该过程。很抱歉,第二个过程也将始终在1130时触发。@rickmanalexander,而C#或VB.NET提供了多线程框架,对COM对象的并发访问将抛出
COMException
left&right。COM和.NET具有完全不同的线程模型,因此.NET线程需要同步。是的,.NET可以做MT,但是.NET/COM Interop+MT=麻烦。