等待vba中的计算时间

我想用vba运行数据循环(2010,2011)(2011,2012)(2012,2013)…来逐个创build一个新的工作簿。

但是这里有一个问题,当我们input参数Current:Previous:我们需要等待一段时间来计算公式(这是在彭博terminal上),如果我们立即创build或复制表单中的数据,它可能是空的或(数据请求)。 那么我该如何解决这个问题呢?

在这里输入图像说明

 Sub Copy() For i = 2015 To 2017 ThisWorkbook.Activate Range("C8") = i Range("C9") = i + 1 Dim wb As Workbook Set wb = Workbooks.Add ThisWorkbook.Sheets("Sheet1").Copy Before:=wb.Sheets(1) wb.SaveAs "C:\Users\user\Desktop\VBA test\" & i & ".xlsx" Next i End Sub 

我的问题是

1.如何保存价值?

在这种情况下,新书总是有一张空白的sheet1和一张复印的sheet1(1) ,我只能复印一张sheet1吗?

3.创build时如何closures新的工作簿或不要让它们打开(在这种情况下,我有很多打开的工作簿)

4.如何留在语法Range("C9") = i + 1给原始工作簿计算足够的时间?

1。

 ActiveSheet.Cells.Copy ActiveSheet.Cells.PasteSpecial Paste:=xlPasteValues ActiveSheet.Cells.PasteSpecial Paste:=xlPasteFormats 

2。

 ActiveSheet.Copy 

3。

 ActiveWorkbook.Close 

4。

 Application.Wait (Now + TimeValue("00:00:10"))'wait 10 seconds 

把它们加起来:

 Sub Copy() Application.ScreenUpdating = False For i = 2015 To 2017 ThisWorkbook.Activate Range("C8") = i Range("C9") = i + 1 Application.Wait (Now + TimeValue("00:00:10"))'wait 10 seconds Dim wb As Workbook Dim ws As Worksheet ThisWorkbook.Sheets("Sheet1").Copy Set wb = ActiveWorkbook Set ws = ActiveSheet ws.Cells.Copy ws.Cells.PasteSpecial Paste:=xlPasteValues ws.Cells.PasteSpecial Paste:=xlPasteFormats wb.SaveAs "C:\Users\user\Desktop\VBA test\" & i & ".xlsx" wb.Close Next i Application.ScreenUpdating = True End Sub 

我从我的旧macros拿走这个部分,但应该工作正常。

我添加了Application.ScreenUpdating = False/True 。 总是在屏幕上进行大量更改的macros中使用它(删除/插入行/列,打开/closures工作簿等)。

只是猜测…尝试写两次Calculate ,它会减慢循环,因此它可能会是好的:

 Option Explicit Public Sub TestMe() Dim i As Long For i = 1 To 5 Calculate Worksheets(i).Copy After:=Worksheets(i + 1) Calculate Next i End Sub