2015-07-14 2 views
1

У меня в настоящее время возникает неожиданная проблема с моим кодом. Предполагается обновить две серии данных объекта диаграммы динамически. Недавно я добавил еще одну серию в коллекцию (в общей сложности 3 серии сейчас). Серия данных обновляется правильно, но проблема в том, что форматирование для 3-й серии теперь обменивается между собой каждый раз, когда происходит обновление. Вот мой код ниже, где происходит обновление:VBA обновление серии данных forumla изменение форматирования

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

Смежные вопросы