2016-08-12 66 views
2

在我的报告中,我有一个每月更新的图表。它只有一系列的数据,并且每个月都会为该系列添加一个新的点。这是汇总报告的较大代码中的一小部分。我很抱歉,它是多么波涛汹涌。 “XXX”是一个占位符列,以便我可以引用一个动态位置。我通常会将“XXX”中的.Offset移至工作表的各个位置。VBA按钮,它将数据点添加到图表上的一个系列中?

此部分Autofills将下一个日期放入占位符左侧的列中。它是我的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坐标的动态位置。它设置一个Range,从单元格到占位符为Offset的动态单元格。

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坐标到已经取得的图表,并坐在工作表

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。有关如何解决这个问题的任何想法?

有任何问题让我知道。

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

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

感谢

+0

什么行给出错误? – dbmitch

+0

'Charts(“Cpk Average”)。SeriesCollection(“Cpk”)。Values = ws.Range(rng171.Address&“:”&EmptyAverageCell.Address)' – Keizzerweiss

+0

这意味着“Cpk Average”不是命名图表,如果是,那么Cpk不是该图表中的命名系列。尝试在立即窗口中评估这些部分并查看哪些会引发错误。 –

回答

1

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

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这是一个属性,而不是对象,如果我理解正确的话。感谢您指引正确的方向。