1秒延迟持续近2秒

我正在编写一个代码,将数据从一个电子表格复制到另一个电子表格。 我已经尝试了Application.Wait和睡眠,但他们阻止两个电子表格,所以我决定使用一个做直到循环。 它有效,但1秒持续近2秒,我不知道为什么。 所以我只留下了代码中的循环,但testing给出了相同的结果(大约需要95秒)。 任何build议? 这里是代码:

Sub Test() Dim Delay As Date cell = 1 For i = 1 to 60 Workbooks("Data").Worksheets("Sheet1").Range("C" & cell).Value = cell cell = cell +1 Delay = Now() + TimeValue("00:00:01") Do Until Now() >= Delay Do Events Loop Next i End Sub 

这只是一个大概的延迟,因为你真的不知道什么是通过消息队列正在处理的DoEvents命令(一个字btw)。 另一种方法是使用Application.OnTime方法从内部调用过程。

 Sub timed_routine() Application.Interactive = False ThisWorkbook.Worksheets("Sheet1").Cells(1, 1) = 1 Application.Interactive = True 'Debug.Print Timer Application.OnTime Now + TimeSerial(0, 0, 1), "timed_routine" End Sub 

Debug.Print Timer命令取消注释并处于活动状态,此例程大约在1.015秒内循环。