从另一个子执行子

时间:2019-10-31 20:00:26

标签: excel vba

我有以下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,该主Sub更新了SQL查询。运行主Sub时,着色适用于某些单元格,但并非全部。当我再次运行主Sub时,着色将适当地应用于所有单元格。

当我逐行运行着色Sub时,它可以完美运行。 为什么在调用main Sub时从第一次尝试开始就不起作用?我必须在某个地方暂停应用程序吗?

已编辑: Main Sub刷新了我在工作簿中的查询,并调用ColorMain:

Sub RefreshAll()

    ActiveWorkbook.RefreshAll

    Call ColorMain
End Sub

1 个答案:

答案 0 :(得分:0)

问题是执行着色子程序时查询未完全更新,如@Mark S.所述。

在查询的属性(“编辑连接属性”)中,我勾选了“启用后台刷新”选项。这样一来,在执行其他任何操作(即运行coloring Sub)之前,查询将得到完全更新。

enter image description here