等待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