在excel vba中更改系列

use*_*549 3 excel vba excel-vba

我的一张纸上有一张图表,我需要在代码中更改一个系列.问题是我一直收到错误1004消息.我环顾四周,无法找到理由.这是代码:

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

Sid*_*out 10

你在试试吗?

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

  • +1我自己也到了那里...:-) @user2337549,我用它来找到正确的格式:`Debug.Print Sheets("Charts").ChartObjects(1).Chart.SeriesCollection(1).Formula` (2认同)

Dav*_*ens 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
Run Code Online (Sandbox Code Playgroud)

实际上,这是一个非常简单的例子.我经常使用这样的方法动态构建或更新图表.假设它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
Run Code Online (Sandbox Code Playgroud)