【发布时间】:2020-05-30 23:27:10
【问题描述】:
我正在尝试在 VBA 中运行一个循环,该循环将刷新第三方数据、将输出复制/粘贴为值、将 API 周期更改为更早的日期并在循环上运行它。我认为,我的问题是 VBA 在复制/粘贴下一组值之前不会等待第三方数据刷新。我使用 FactSet 作为 API 并提取一些非常简单的数据。
i = 我的相对日期范围。我从 -1(等于上个月)开始,我希望循环在重新开始刷新和复制/粘贴之前继续将本月字段向后移动一个。
ExecuteExcel4Macro 刷新整个工作簿的 FDS 代码 - 这工作正常。
第三组代码应该等到FDS代码刷新,不再抛出错误,复制/粘贴输出。
i 变量没有改变,FDS 代码刷新太频繁,循环只是一遍又一遍地复制/粘贴相同的数据。
非常感谢任何帮助。
Dim i As Long
Dim ws As Worksheet
Dim lastRow As Long
Set ws = ThisWorkbook.Worksheets("Sheet1")
ws.Activate
i = ws.Range("E3")
Do While i > -5
ws.Range("E3").Value = i - 1
ExecuteExcel4Macro "FDSFORCERECALC(FALSE)"
Sheets("Sheet2").Select
If Application.WorksheetFunction.CountIfs(Range("4:4"), "#DIV/0!") > 0 Then
'Check every 3 seconds
Application.OnTime Now + TimeValue("00:00:03"), "Check_API"
Else
With Sheets("Sheet2")
lastRow = .Cells(.Rows.Count, "B").End(xlUp).Row + 1
End With
Sheets("Sheet2").Select
Rows("4:4").Select
Selection.Copy
Rows(lastRow).Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
End If
Loop
End Sub
【问题讨论】:
标签: vba