VBAbutton,添加一个数据点到图表上的一个系列?

在我的报告中,我有一个每月更新的图表。 它只有一系列的数据,并且每个月都为该系列添加一个新的点。 这是汇总报告的较大代码中的一小部分。 我很抱歉,它是多么波涛汹涌。 “XXX”是占位符列,以便我可以引用一个dynamic位置。 我将典型地从“XXX”移到工作表的各个位置。

此部分Autofills将下一个dateAutofills占位符左侧的列中。 这是我的Graph的X坐标。

 Dim Dates As Range Dim StartDate As Range Dim EmptyDateCell As Range Dim LastDateCell As Range Dim AllDateCells As Range Set StartDate = ws.Rows("3").Cells.Find("XXX").Offset(0, -3) Set LastDateCell = ws.Rows("3").Cells.Find("XXX").Offset(0, -2) Set EmptyDateCell = ws.Rows("3").Cells.Find("XXX").Offset(0, -1) Set Dates = ws.Range(StartDate.Address & ":" & LastDateCell.Address) Set AllDateCells = ws.Range(Dates.Address & ":" & EmptyDateCell.Address) Dates.AutoFill Destination:=AllDateCells 

这是我的Y坐标范围。 它也被添加到每个月,通过Autofill

 Dim Averages As Range Dim StartAverage As Range Dim EmptyAverageCell As Range Dim LastAverageCell As Range Dim AllAverageCells As Range Set StartAverage = ws.Rows("171").Cells.Find("XXX").Offset(0, -3) Set LastAverageCell = ws.Rows("171").Cells.Find("XXX").Offset(0, -2) Set EmptyAverageCell = ws.Rows("171").Cells.Find("XXX").Offset(0, -1) Set Averages = ws.Range(StartAverage.Address & ":" & LastAverageCell.Address) Set AllAverageCells = ws.Range(Averages.Address & ":" & EmptyAverageCell.Address) Averages.AutoFill Destination:=AllAverageCells 

这是我的X和Y坐标的dynamic位置。 它设置从单元格到占位符Offset的dynamic单元格的Range

 Dim rng171 As Range Dim rng188 As Range Dim xoffset As Range Set xoffset = ws.Rows("171").Cells.Find("XXX").Offset(-17, 0) Set rng171 = ws.Range("D171") Set rng188 = ws.Range("D188") 

这是失败的代码的一部分。 我正在尝试将x和y坐标添加到已经创build并位于工作表中的图表中

 Charts("Cpk Average").SeriesCollection("Cpk").Values = ws.Range(rng171.Address & ":" & EmptyAverageCell.Address) Charts("Cpk Average").SeriesCollection("Cpk").XValues = ws.Range(rng188.Address & ":" & xoffset.Address) 

它说script is out of range 。 任何想法如何解决这个问题?

任何问题都让我知道。

这里是我的项目的例子。 这不是我上面的代码是什么。 这只是帮助可视化过程。 在将数据添加到graphics之前,此示例将在代码中的确切位置。 看看这个例子的评论。

https://drive.google.com/open?id=0B-Cnpvgoos3caVNJUUgxbVNGeHM

谢谢

好吧,我知道了。 最后两行代码如下

 ws.ChartObjects("chart 10").Chart.SeriesCollection("series1").Values = ws.Range(rng171.Address & ":" & EmptyAverageCell.Address) ws.ChartObjects("chart 10").Chart.SeriesCollection("series1").XValues = ws.Range(rng188.Address & ":" & xoffset.Address) 

该代码需要有.ChartObjects因为图表是在一个工作表中,并没有它自己的工作表。 我的系列和图表名称都是错误的,我错过了.Chart这个属性,而不是一个对象,如果我理解正确的话。 感谢您转向正确的方向。