Выполнение Sub из другого Sub - PullRequest
0 голосов
/ 31 октября 2019

У меня есть следующий код VBA для окраски ячеек таблицы, который является результатом запроса, который может обновляться раз за разом.

Sub ColorMain()

Dim Data As Range
Dim cell As Range

Sheet1.Activate
Range("D7").Select
Range(Selection, Selection.End(xlDown)).Select

'clean the coloring
Set Data = Selection
Data.Interior.ColorIndex = 0

'apply the coloring
For Each cell In Data
If cell.Value = "X" Then
   cell.Interior.ColorIndex = 22
ElseIf cell.Value = "Y" Then
   cell.Interior.ColorIndex = 44
End If
Next

End Sub

Я вызываю этот Sub из другого основного Subкоторый обновляет запрос SQL. При запуске основной подкраски применяется к некоторым ячейкам, но не ко всем. Когда я запускаю основной Sub еще раз, тогда окраска применяется ко всем ячейкам соответствующим образом.

Когда я запускаю окрашивающий Sub построчно, он отлично работает. Почему он не работает с первой попытки при вызове основного Sub? Нужно ли где-то приостанавливать работу приложения?

РЕДАКТИРОВАНИЕ: Main Sub обновляет запросы, которые у меня есть в книге, и вызывает ColorMain:

Sub RefreshAll()

    ActiveWorkbook.RefreshAll

    Call ColorMain
End Sub

1 Ответ

0 голосов
/ 01 ноября 2019

Проблема заключалась в том, что запрос не был полностью обновлен при выполнении подкрашивания, как упоминал @Mark S.

В свойствах запроса (Изменить свойства подключения) я поставил галочку у опции «Включить фоновое обновление». Это позволяет полностью обновить запрос, прежде чем выполнять какие-либо другие операции, например запускать раскраску Sub.

enter image description here

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