如何在VBA代码中为新图表系列的值和X值使用名称范围?

时间:2019-04-05 16:20:02

标签: excel vba

我正在增强工作模板,该模板要求用户每周创建一个新文件,以便能够每周跟踪进度,因此该文件将每周更改名称。

该文件在“摘要”工作表中大约包含3个图表。

在此“摘要”工作表中,条形图#2当前具有5个系列。我正在编写能够添加第6个系列的脚本。...这没问题。

我希望新的Series值使用模板当前在其他工作表中定义的单元格的Name Range中的值。

我还希望“水平轴标签”使用模板在不同的工作表中也定义的单元格的“名称范围”。

这是我到目前为止的代码:

Sub add_software()
'Update software Trend in Summary

Sheets("Summary").SelectActiveSheet.ChartObjects("Chart 2").Activate
ActiveChart.SeriesCollection.NewSeriesActiveChart.FullSeriesCollection(6).Name = "='Summary'!$C$44"

'MY PROBLEM IS HERE

ActiveChart.FullSeriesCollection(6).Value = ActiveWorkbook.Sheets("Summary").Range("Software")
ActiveChart.FullSeriesCollection(6).XValues = ActiveWorkbook.Sheets("Summary").Range("dates")

End sub

我希望脚本将使用这些“名称范围”中的值(与其他5个系列中使用的值相同),并使用名称范围中的值进行填充。

这是我得到的错误:

  

运行时错误'438':
对象不支持此属性或方法   错误

3 个答案:

答案 0 :(得分:0)

尝试使用另一种方法来获取范围。未经测试,但应该可以。

ActiveChart.FullSeriesCollection(6).Value = ThisWorkbook.Names("Software").RefersToRange
ActiveChart.FullSeriesCollection(6).XValues = ThisWorkbook.Names("dates").RefersToRange

编辑:“名称”之后有一个额外的点。

答案 1 :(得分:0)

@RicardoA接受的解决方案可以很好地工作,但是它假定名称的静态定义,并将每个名称的当前地址放入系列的SERIES公式中。如果名称是动态的,则SERIES公式将无法跟上更改。下面将名称而不是名称的地址放入系列公式中:

ActiveChart.SeriesCollection(6).XValues = "='" & ThisWorkbook.Name & "'!dates"
ActiveChart.SeriesCollection(6).Values = "='" & ThisWorkbook.Name & "'!software"

答案 2 :(得分:-1)

你有错字。您错过了一个“

你在哪里

.Range("Software)

替换为

.Range("Software")

祝你好运