У меня есть следующий код 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