Почему VBA продолжает работать до того, как запрос будет обновлен? - PullRequest
0 голосов
/ 19 февраля 2019

У меня следующий код, обновляющий 1 или 2 запроса, в зависимости от:

Sub RefreshPowerQueries()
Dim WB As Workbook
Dim startTime As Single

startTime = Timer

Set WB = ThisWorkbook
Application.Calculate
If WB.Names("One_Or_Two_Queries_Boolean").RefersToRange.Value2 Then
    WB.Connections("Query - 1").Refresh
    WB.Connections("Query - 2").Refresh
    shIndiv.UsedRange.Columns.AutoFit
    shIndiv.Columns("Z").Hidden = True
Else
    WB.Connections("Query - 3").Refresh
    shIndiv2.UsedRange.Columns.AutoFit
    shIndiv2.Columns("Z").Hidden = True
    shIndiv2.Select
End If

MsgBox "Load Time: " & Format((Timer - startTime) / 86400, "hh:mm:ss")

End Sub

Когда он проходит через Else часть оператора, он ждет, пока таблица не будет полностью обновлена, а затем корректно выравниваетвсе, а затем генерирует, сколько времени это заняло.Отлично, работает отлично (и занимает ~ 6 секунд).

Однако, когда я прохожу через часть True IF, для запуска требуется около 1 секунды, но запросы не обновляются.Затем запросы обновляются в фоновом режиме, а через некоторое время они обновляются - после завершения изменения размера.

Почему это происходит?Есть ли способ заставить запросы завершить обновление, прежде чем продолжить?

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...