我遇到了一些用于创建仪表板的Excel自动化的问题。我有一个启用Excel宏的工作簿,它也具有到Access数据库的数据连接。每天早上(周一至周五),另一个进程会自动将数据导出到Access数据库,然后Excel连接到必要的表格,以便在图表和图形中显示数据。
我的问题: 我正在使用VBA在其中一个图表上执行计算,这些图表从Access和Excel之间的数据连接生成的表中检索新数据。我们的想法是将新一天的数据包含在使用前一天数据的计算中。新一天的数据始终是列中包含数据的最后一个单元格,前一天的数据位于同一列的正上方。出于某种原因,在下面的代码完成执行之后,新的一天的数据才会被填满。我尝试过使用工作表("工作表' sName")。计算因为图表使用IF语句从数据连接生成的表中获取数据但是它仍然无法运作。我也尝试使用延迟认为代码运行速度太快但结果是一样的。还有其他人遇到过这个问题吗?
我的计算代码:
Sub Differences(ByVal column As String)
Dim i As Integer
Dim ws As Sheets
Dim wks As Worksheet
Dim dailyDiff As Double
Dim busDayDiff As Double
Dim mtdDiff As Double
Set ws = ThisWorkbook.Worksheets
Set wks = ws("Charts")
wks.Activate
i = 4
wks.Range(column & i).Select
Do While Selection.Offset(1, 0).Value <> ""
i = i + 1
wks.Range(column & i).Select
Loop
**dailyDiff = Selection.Value - Selection.Offset(-1, 0).Value** '<---The Calculation i'm referring to
busDayDiff = Selection.Value - Selection.Offset(0, 1).Value
mtdDiff = Selection.Value - wks.Range(column & "3").Value
ws.Range(column & "28") = busDayDiff
ws.Range(column & "29") = dailyDiff
ws.Range(column & "30") = mtdDiff
End Sub
Sub AllDifferences()
Differences ("b")
Differences ("d")
Differences ("f")
Differences ("h")
Differences ("j")
Differences ("l")
End Sub
Sub RefreshAll()
Application.ScreenUpdating = False
ActiveWorkbook.RefreshAll
Application.ScreenUpdating = True
End Sub
Sub test()
Call RefreshAll
Call AllDifferences
End Sub
答案 0 :(得分:0)
解决此问题的一种方法是在将Access / Database数据拉入另一个子目录后,放置要运行的所有子等。每次调用访问信息时都必须执行此操作。如果你打电话给&#34;主人&#34;在Application.OnTime Now + TimeValue(&#34; 00:00:15&#34;)之后的sub,它将失败 - 您必须将所有子跟随放入一个新的主子。