VBA: Как дать Excel время для расчета, прежде чем перейти к следующей команде? - PullRequest
0 голосов
/ 29 августа 2018

Я использую формулу BDP от Bloomberg для получения цен, что обычно занимает около 1-4 секунд. Тем не менее, VBA запускает следующую строку кодов, прежде чем цена будет завершена, что приводит к ошибкам. Мне интересно, есть ли способ заставить Excel запустить 5 секунд:

Application.Run "RefreshAllStaticData"

Полный код:

Sub update()

Application.Run "RefreshAllStaticData"

Worksheets("BB").Range("B2:G1000").Copy
Worksheets("Upload").Range("B2").PasteSpecial Paste:=xlPasteValues

ActiveWorkbook.Save
ActiveWorkbook.Close

End Sub

1 Ответ

0 голосов
/ 29 августа 2018

Опять же, мы не увидели весь ваш код (поскольку мы не знаем, что влечет за собой Application.Run "RefreshAllStaticData"), но это:

Sub update()

Application.Run "RefreshAllStaticData"

'Refresh everything
ActiveWorkbook.RefreshAll
'Wait 5 seconds just in case
Application.Wait (Now + TimeValue("00:00:05"))

Worksheets("BB").Range("B2:G1000").Copy
Worksheets("Upload").Range("B2").PasteSpecial Paste:=xlPasteValues

ActiveWorkbook.Save
ActiveWorkbook.Close

End Sub
...