excel - 动态地将系列添加到图表中

标签 excel vba dynamic dynamically-generated excel-charts

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

Sub UpdateChart()

'declaring variables'
Dim chrt As ChartObject
Dim chrtsercoll As SeriesCollection
Dim chtser As Series

'create the series collection from the chart'
Set chrt = ActiveSheet.ChartObjects(1)
'Get the series collection from the chart'
Set chrtsercoll = chrt.Chart.SeriesCollection

'delete all existing series in chart'
For Each chtser In chrtsercoll
        chtser.Delete
    Next chtser

'set up series in case of residual plot'
If Range("C21").Value = "residual series" Then
    With chrtsercoll.NewSeries()
    .Name = "=" & ActiveSheet.Name & "!B15"
    .Values = "=" & ActiveSheet.Name & "!" & Evaluate(ActiveSheet.Names("RSr").Value)
    End With
    ActiveSheet.ChartObjects(1).Chart.ChartType = xlLine
End If

End Sub   

最佳答案

像这样的东西应该有效。

  • 始终使用工作表限定范围引用等
  • 在范围引用中使用引号将工作表名称括起来,以防工作表名称包含空格
  • 您没有为系列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 - 动态地将系列添加到图表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66519366/

相关文章:

excel - VBA UserForm 为其参数之一提供运行时错误 91

excel - 如果 0 或 ""删除行 : code works but very slow

vba - 如何在 16000 行文件上清除 vba 中的错误 1004?

vba - 如何格式化合并单元格周围的边框vba

java - "Dynamically"在Java中执行代码

PHP/MYSQL - 如何将 2 个或更多结果传递到动态页面?

Excel:替代 CEILING,四舍五入到最接近的值

angular - 在 Angular 中上传/导入 excel 工作表时,日期以数字格式显示

variables - xslt - 如何创建一个具有动态确定长度的空格字 rune 本内容的变量,该变量将表现良好

excel - 使用 2 张纸,如果单元格值匹配,则从另一列中引入日期值