暂停VBA代码而不暂停电子表格

我有一个VBA代码,它从一个电子表格复制和粘贴数据,从外部服务器获取数据。 因此,该电子表格需要一段时间(从10-30秒)来加载数据。

我研究了如何暂停一个macros–application.wait,sleep等 – 但是它们也暂停了电子表格函数,所以来自外部服务器的数据无法加载。 因此,当代码复制数据时,它将粘贴#DIV/0 !。 有一个函数可以中断/停止/暂停macros给服务器数据加载时间?

我也想这个macros运行,而不需要用户input(网上的一些build议有用户推进代码每次迭代)。

 Sub all() Dim wb1 As Workbook Set wb1 = Workbooks("all") Dim wb2 As Workbook Set wb2 = Workbooks("other") For i = 2 To 5 Application.Wait Now() + TimeValue("00:01:00") wb2.Sheets("Sheet1").Cells(4, 2).Copy wb1.Sheets("Sheet1").Cells(i, 18).PasteSpecial xlPasteValues Next i End Sub 

Application.Wait在Excel中暂停处理。 这意味着您的后台处理也将暂停。

相反,试试这个:

 Dim WaitTime as Date For i = 2 To 5 WaitTime = Now() + TimeValue("00:01:00") While Now() < WaitTime DoEvents Wend wb2.Sheets("Sheet1").Cells(4, 2).Copy wb1.Sheets("Sheet1").Cells(i, 18).PasteSpecial xlPasteValues Next i