【发布时间】:2016-02-17 16:37:27
【问题描述】:
我有两张表,一张是城市列表(我们称之为城市列表),另一张是与这些城市对应的数据点(称之为数据表)。数据表连接到我在 MS SQL Server 中构建的 Select 查询。此 Select 查询/数据表有一个 Where 子句,我在其中替换了 SQL 条件并替换了 ?,以便在连接到 Excel 时使其成为参数。
现在我已经解决了这个问题,我将解释我要完成的工作。我想遍历城市列表,对于列表中的每个城市,更新数据表以反映城市的数据点。最终,我想循环遍历,每次刷新数据表时,它都会使用该特定表保存工作簿的副本。
我在下面发布了我当前的代码,但我的问题是表格永远不会刷新与当前通过循环选择的城市相对应的当前数据。话虽如此,如果我按下escape 键以跳出VBA 宏,那么表格将刷新为在我停止宏之前的最后一个城市。
代码:
Sub Macro1()
Dim WS As Worksheet
Dim WS2 As Worksheet
Dim CT As Variant
Dim MSG As String
Set WS = Sheets("Sheet1")
Set WS2 = Sheets("Sheet2")
CT = Range("A1").CurrentRegion
For i = 2 To UBound(CT, 1)
MSG = ""
For J = 1 To UBound(CT, 2)
WS.Range("$D$2").Value = CT(i, J) //Places the city into Cell $D$2 which is where The Data Table looks to for the parameter.
Exit For
Next J
ActiveWorkbook.Connections("Query from Database").Refresh
WS2.ListObjects(1).Refresh
Next i
End Sub
就好像宏运行得太快,表格无法跟上并刷新。我尝试在代码中添加一些等待时间,希望它能给它足够的时间来让表刷新,但这没有影响。我还关闭了Background Refresh,这似乎也没有任何作用。现在它只是循环遍历城市表,并且每个城市都显示查询正在刷新,但是在查询完成刷新后,它会进入下一个城市而无需更新数据表。帮助!
【问题讨论】: