VBA按钮,用于向图形上的序列添加数据点?
在我的报告中,我有一个每月更新的图表。它只有一个系列的数据,每个月都会在这个系列中增加一个新的点。这是将报告汇总在一起的较大代码的一小部分。我事先为它的波涛汹涌感到抱歉。“XXX”是一个占位符列,因此我可以引用动态位置。我通常将从“XXX”到工作表周围的各个位置进行VBA按钮,用于向图形上的序列添加数据点?,vba,excel,Vba,Excel,在我的报告中,我有一个每月更新的图表。它只有一个系列的数据,每个月都会在这个系列中增加一个新的点。这是将报告汇总在一起的较大代码的一小部分。我事先为它的波涛汹涌感到抱歉。“XXX”是一个占位符列,因此我可以引用动态位置。我通常将从“XXX”到工作表周围的各个位置进行.Offset 此部分将下一个日期自动填充到占位符左侧的列中。它是我的图形的X坐标 Dim Dates As Range Dim StartDate As Range Dim EmptyDateCell As Range Dim La
.Offset
此部分将下一个日期自动填充到占位符左侧的列中。它是我的图形的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坐标的动态位置。它设置一个从单元格到动态单元格的范围
,该动态单元格是从占位符开始的偏移量
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)
它表示脚本超出范围
。有没有关于如何解决这个问题的想法
任何问题都让我知道
下面是我的项目的一个例子。这不是我上面的代码的目的。这只是为了帮助可视化过程。在将数据添加到图形之前,此示例将位于代码中的确切位置。看一看关于这个例子的评论
谢谢好的,我知道了。最后两行代码如下
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
,如果我理解正确的话,它是一个属性,而不是一个对象。谢谢你给我指引了正确的方向 哪一行给出了错误?Charts(“Cpk Average”).SeriesCollection(“Cpk”).Values=ws.Range(rng171.Address&“:”&EmptyAverageCell.Address)
表示“Cpk Average”
不是命名图表,或者如果是,则“Cpk”
不是该图表中的命名系列。试着在即时窗口中评估这些部分,看看哪个部分会引起错误。我应该如何准确地评估它们?我不知道你的意思。在VBE中,从“视图”菜单中,确保已启用“立即”窗格。然后,做:?图表(“Cpk平均值”)。命名,看看这是否会引发错误?如果没有,那么做?图表(“Cpk平均值”).SeriesCollection(“Cpk”).Name
,看看会发生什么。如果两者都有效,则应打印出相应的.Name
属性。