【问题标题】:Change Series Values to Named Range将系列值更改为命名范围
【发布时间】:2016-05-20 19:29:46
【问题描述】:

我在 Excel 中有一个图表(“图表 13”),我还有一个名为“nationals”的命名范围。

我想用命名范围替换图表系列的 Y 值(图表有三个不同的系列,我计划对所有三个重复类似的过程)。

这是我一直在尝试但没有成功:

ActiveWorkbook.Sheets("My_Sheet").ChartObjects("Chart 13").Activate
ActiveChart.SeriesCollection(1).Values = Range("nationals")

我收到以下错误:

“运行时错误'91':对象变量或未设置块变量”

我觉得我已经很接近了,但我这辈子都无法到达终点线!感谢您的帮助。

编辑 这是一个折线图(带标记)——抱歉之前不清楚。相同情况的简单版本:

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    您需要像这样将对象添加到范围中:

    Dim MyChart
    Set MyChart = ActiveWorkbook.Sheets("My_Sheet").ChartObjects("Chart 13").Chart
    
    MyChart.SeriesCollection(1).Values = ActiveWorkbook.Sheets("My_Sheet").Range("nationals")
    

    另外,正如您所注意到的,ChartObjects().Chart 对象具有SeriesCollection

    【讨论】:

    • 我现在收到一个新错误,这就是进步! 运行时错误“-2147352565 (8002000b)”:指定的维度对当前图表类型无效。 这是一个折线图,所以值可能是不同的属性?感谢您的帮助。
    • 好的,已修复,您缺少对象中的 .ChartSeriesCollection 不属于ChartObjects,而是属于它的子对象Chart
    • 感谢您的跟进 - 我到电脑前会试试这个!
    • 酷,如果解决了您的问题,别忘了接受并点赞
    • 抱歉耽搁了-所以这不太奏效,因为我无法将图表系列设置为新工作表中的命名范围(复制时丢失,我无法设置再次使用代码)。但是,我通过创建一个模板电子表格(单独)并每次都复制到其中并“另存为”来解决这个问题。该模板已经具有与其系列链接的命名范围的图表。这个解决方案效果很好。如果您将其添加到您的答案中,我将接受它!再次感谢。
    猜你喜欢
    • 2014-03-17
    • 2022-01-24
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多