【发布时间】:2018-02-10 13:18:42
【问题描述】:
这个问题已经在不同的主题中讨论过,但解决方案对我没有帮助。我正在尝试计算和显示图表的一系列数据。类似“计算 y”-->“更新系列”--> 等待 100 毫秒-->“重新计算”。程序正在运行,但图表仅在 Main-Sub 完全完成时更新(而不是每 100 毫秒后)。
该系列完全基于 VBA 中的数组,不涉及 Cells。
当我在“睡眠”功能之后直接运行带有断点的程序时,图表会更新。
对我来说,DoEvents 和 chart.Refresh 方法并没有给我想要的结果。有人有想法吗?谢谢你们的帮助。
Sub Main()
Dim ws As Worksheet
Dim mychart As Chart
Dim ser As Series
Dim x(1 To 10) As Double
Dim y(1 To 10) As Double
Dim i As Integer
Set ws = ThisWorkbook.Sheets("Sheet1")
Set mychart = ws.ChartObjects("Chart 1").Chart
Call DeletePlot(mychart)
For i = 1 To 10
x(i) = i
y(i) = i
Next i
' Plot first data
Set ser = mychart.SeriesCollection.NewSeries
With ser
.Values = y
.XValues = x
End With
Dim j As Integer
For j = 2 To 4
For i = 1 To 10
y(i) = i ^ j ' update data
Next i
With ser
.Values = y ' update series
End With
mychart.Refresh ' Does not work
DoEvents ' Does not work
Sleep (100)
Next j
End Sub
睡眠功能:
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
PlotDelete 函数:
Sub DeletePlot(mychart As Chart)
Dim ser As Series
For Each ser In mychart.SeriesCollection
ser.Delete
Next ser
End Sub
【问题讨论】:
-
如何为代码的第一部分创建一个函数(删除绘图+添加数据)并在重新计算 X 和 Y 后调用它。
-
结果相同。图表仅在 Main 结束时更新。
-
您在代码中的某处使用 application.screenupdating = false 吗?
-
不,我贴的代码是完整的代码
-
您是否尝试在第二个中使用 ser 块添加 x 数据?