所以我有一个Sub会运行另外两个宏,但是我需要它运行第一个然后等待1分钟再运行第二个
我在网上看过并收集了这个:
Sub MainExecute
stdB18
Application.Wait(Now + TimeValue(0:01:00"))
runB18
End Sub
问题在于,当我这样做时,它似乎不会等到stdB18
运行之后,而是等待1分钟再运行任何东西。
我也尝试将wait
放在runB18
的顶部,但这会使整个应用程序在运行前等待。我有什么方法可以让它运行stdB18
,然后等待1分钟,然后运行runB18
?
谢谢!
编辑:我需要等待的原因是因为我需要等待stdB18
中刷新的QueryTable加载,然后才执行runB18
我需要的for循环将提取数据从表中。
答案 0 :(得分:6)
通常使用.Refresh来运行查询。只需添加BackgroundQuery:= False就可以使代码等到刷新查询表并且您不需要使用Application.Wait,因为您不知道查询需要多长时间才能完成
所以试试......
select foo.*
from (select t.*,
row_number() over (partition by foo.category order by foo.category) as seqnum
from foo join
t
on foo.category = t.category
) t
where seqnum <= t.cnt;
答案 1 :(得分:5)
您需要Application.OnTime
Sub MainExecute
Application.OnTime Now() + TimeValue("0:01:00"), "runB18"
stdB18
End Sub
答案 2 :(得分:1)
你告诉整个申请要等。相反,设置一个计时器以在一分钟后创建一个事件,然后创建一个例程来捕获此事件并运行第二个例程。