VBA更新数据系列forumla改变格式

时间:2015-07-14 14:59:39

标签: excel vba excel-vba charts

我目前的代码出现意外问题。它假设动态更新图表对象的两个数据系列。最近我又添加了另一个系列(现在共有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系列集合对象中的每一个都会正确更新,但每个更改的关联格式都会更新。我相信可以删除系列集合并重新创建删除格式,但我不确定为什么会出现这种情况。任何帮助都会很棒。

1 个答案:

答案 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