在excel vba中更改系列

我在我的一张床单上有一个图表,我需要在代码中更改一个系列。 问题是我不断收到错误1004消息。 我环顾四周,找不到原因。 代码如下:

Sheets("Charts").ChartObjects(1).Chart.SeriesCollection(1).Formula = "=G49:I" & dblResult & ")"

你在试这个吗?

 Sheets("Charts").ChartObjects(1).Chart.SeriesCollection(1).Formula = _ "=SERIES(,," & "Charts!G49:I" & dblResult & ",1)" 

我更喜欢操作Series Formula的另一种方法就是使用SeriesCollection的各个属性。

注意我正在写内存/未经testing,所以让我知道是否有任何问题!

With块中,您需要确定用于ValuesXValuesNameOrder ,当然您可以省略不需要的部分(例如,我很less需要操作该系列.Order

 Dim cht as Chart Dim srs as Series '# Series variable' Dim s as Long '# Series iterator' Dim ws as Worksheet Set ws = ActiveSheet Set cht = ws.ChartObjects(1).Chart '## Modify as needed.' For each srs in cht.SeriesCollection With srs s = s+1 .Values = ws.Range("Some_Range_For_Values") .XValues = ws.Range("Range_For_XValues") .Name = ws.Range("Range_For_SeriesName") .Order = s End With Next 

实际上,这是一个非常简单的例子。 我经常使用这种方法dynamic构build或更新图表。 假设XValues在列A中,而系列数据在列B:F中,则可以执行如下操作:

 Dim rngData as Range '# A range containing all of the series values & xValues' Dim s as Long Dim cht as Chart Dim srs as Series Dim ws as Worksheet Set ws = ActiveSheet Set cht = ws.ChartObjects(1).Chart Set rngData = Range("A2:F10") '## I like to remove existing series, and then add in the new data. ' For each srs in cht.SeriesCollection srs.Delete Next '## Iterate over our range and add series back in to the chart.' For s = 2 to rngData.Columns.Count Set srs = cht.NewSeries With srs .XValues = rngData.Columns(1).Address .Values = rngData.Columns(s).Address 'Name = rngData.Cells(1,s).Offset(-1,0).Value 'Order = s-1 End With Next