我目前的代码出现意外问题。它假设动态更新图表对象的两个数据系列。最近我又添加了另一个系列(现在共有3个系列)。数据系列正确更新,但问题是3次系列的格式化现在每次更新时互相交换。以下是我的代码,其中进行了更新:
Dim WrkSheet As String
WrkSheet = Application.Worksheets(X).Name
If Background > 0 Then
'Update the background data series
Application.Worksheets(X).ChartObjects("Main Chart").Chart.SeriesCollection(2).Formula = _
"=SERIES(""Background"",('" & WrkSheet & "'!$J$32:$J$" & (32 + Background - 1) & ",'" & WrkSheet & "'!$J$" & BackgroundStart2 & ":$J$" & (BackgroundStart2 + Background - 1) & ")," _
& "('" & WrkSheet & "'!$K$32:$K$" & (32 + Background - 1) & ",'" & WrkSheet & "'!$K$" & BackgroundStart2 & ":$K$" & (BackgroundStart2 + Background - 1) & "),2)"
Else
'Make the application not graph background in this scenario
End If
'Update the Peak data series
Application.Worksheets(X).ChartObjects("Main Chart").Chart.SeriesCollection(1).Formula = _
"=SERIES(""Peak"",'" & WrkSheet & "'!$J$" & (PeakStart1) & ":$J$" & PeakEnd1 & ",'" & WrkSheet & "'!$K$" & PeakStart1 & ":$K$" & PeakEnd1 & ",1)"
'Update the peak background data series
Application.Worksheets(X).ChartObjects("Main Chart").Chart.SeriesCollection(3).Formula = _
"=SERIES(""Step Background"",'" & WrkSheet & "'!$J$" & (PeakStart1) & ":$J$" & PeakEnd1 & ",'" & WrkSheet & "'!$O$" & PeakStart1 & ":$O$" & PeakEnd1 & ",1)"
此代码完成后,3系列集合对象中的每一个都会正确更新,但每个更改的关联格式都会更新。我相信可以删除系列集合并重新创建删除格式,但我不确定为什么会出现这种情况。任何帮助都会很棒。
答案 0 :(得分:1)
SERIES
调用的最后一个参数是索引顺序。你有两个条目1和第一个条目有2.它们可能会在你去的时候相互替换。您应该按顺序编号(与SeriesCollection
中的点相同)。
代码显示更改了最后一个看似错误的公式。
"=SERIES(""Step Background"",'" & WrkSheet & "'!$J$" & (PeakStart1) & ":$J$" & PeakEnd1 & ",'" & WrkSheet & "'!$O$" & PeakStart1 & ":$O$" & PeakEnd1 & ",3)"
请注意,我将最后一行从1
更改为3
以匹配SeriesCollection(3)
SERIES
公式的优秀参考资料。 http://peltiertech.com/Excel/ChartsHowTo/ChartSeriesFormula.html