我的一张纸上有一张图表,我需要在代码中更改一个系列。问题是我一直收到错误1004消息。我环顾四周,无法找到理由。这是代码:
Sheets("Charts").ChartObjects(1).Chart.SeriesCollection(1).Formula = "=G49:I" & dblResult & ")"
答案 0 :(得分:10)
你在尝试吗?
Sheets("Charts").ChartObjects(1).Chart.SeriesCollection(1).Formula = _
"=SERIES(,," & "Charts!G49:I" & dblResult & ",1)"
答案 1 :(得分:5)
我更喜欢操作系列公式的另一种方法是使用SeriesCollection
的各个属性。
注意我在内存中写这个/未经测试的,所以请告诉我它是否有任何问题!
在With
区块内,您需要确定用于Values
,XValues
,Name
和Order
的范围,当然你可以省略你不需要的部分(例如,我很少需要操纵系列.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
实际上,这是一个非常简单的例子。我经常使用这样的方法动态构建或更新图表。假设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