将系列动态添加到图表

问题描述

我正在尝试创建一个 excel,它使用几个数据验证切换列表和一个按钮,允许用户为模型构建的特定阶段显示特定图。为此,我需要能够将系列动态添加到图表中。我在网上找到了很多关于这方面的材料,但尽管我尽了最大努力,我还是无法让我的脚本工作。 if 条件中的行似乎总是生成以下错误“运行时错误 '1004':应用程序定义或对象定义错误”。 任何帮助将不胜感激。

ms-rd:

解决方法

这样的事情应该可以工作。

  • 始终使用工作表限定范围引用等
  • 如果工作表名称有空格,请在范围引用中使用引号将工作表名称括起来
  • 您没有为系列分配任何内容 XValues
  • 不清楚 Evaluate(ActiveSheet.Names("RSr").Value) 是否有任何问题 - 也许您可以解释一下您在那里做什么?
Sub UpdateChart()

    Dim ws As Worksheet

    Set ws = ActiveSheet
    With ws.ChartObjects(1).Chart
        'remove existing data
        Do While .SeriesCollection.Count > 0
            .SeriesCollection(1).Delete
        Loop
        'set up series in case of residual plot'
        If ws.Range("C21").Value = "residual series" Then
            With .SeriesCollection.NewSeries
                .Name = "='" & ws.Name & "'!B15" 'use quotes in case name has spaces
                .XValues = 1 'you need to add something here....
                .Values = "='" & ws.Name & "'!" & Evaluate(ActiveSheet.Names("RSr").Value)
            End With
            .ChartType = xlLine
        End If
    End With

End Sub
,

通过实际关注我在 excel 中输入的内容,以及 VBA 告诉您当您将鼠标悬停在它上面时,您的函数等于什么,从而找到了我的评论的答案,谢谢。只是想为了完整起见我会把正常工作的代码放在这里。再次感谢蒂姆!

Sub UpdateChart()

Dim ws As Worksheet

Set ws = ActiveSheet
With ws.ChartObjects(1).Chart
    'remove existing data'
    Do While .SeriesCollection.Count > 0
        .SeriesCollection(1).Delete
    Loop
    'set up series in case of residual plot'
    If ws.Range("C21").Value = "residual series" Then
        With .SeriesCollection.NewSeries
            .Name = "='" & ws.Name & "'!B15" 'use quotes in case sheet name has spaces'
            .XValues = "=" & ws.Range("AC22").Value
            .Values = "=" & ws.Range("AC15").Value
        End With
        .ChartType = xlLine
    End If
End With
End Sub