我有一个数据表,我每周都会添加一列,我尝试编写宏来更改图表来源。
Sub test()
Dim ges, koz, daz As Range
Dim Diaz As Integer
Sheets("Autopilot").Select
Diaz = Range("I2").Value (the value will change every week like I2 = I2 +1)
Set koz = Range("C3").Resize(, Diaz) ( this is the Header row)
Set daz = Range("C772").Resize(2, Diaz) (these are the 2 data rows for the chart)
Set ges = Union(koz, daz)
Sheets("Diagramm").Select
ActiveChart.ChartArea.Select
ActiveChart.SetSourceData Source:=Sheets("Daten").Range(ges)
End Sub
最后一行不起作用。我尝试了没有Range的结尾(仅限.ges)。
任何人都知道这将如何运作?
最好的问候
答案 0 :(得分:1)
VBA无需创建动态图表范围。可以使用范围名称中的公式轻松完成。看看Jon Peltier的网站,特别是如何绘制一直在增长的数据集的最后x行。
无需运行代码,只需运行公式。这有一个额外的好处,它可以在Excel上在线和在手机上工作,而VBA则不会。
答案 1 :(得分:0)
Teylyn使用动态定义名称的答案适用于您,或者如果您不想执行公式,您可以将单元格范围转换为Excel表格(INSERT ... TABLE或Crtl T)。根据该表格制作图表,您附加到表格底部的任何数据都将自动合并到图表中。再也不需要VBA。
答案 2 :(得分:0)
这不起作用:
ActiveChart.SetSourceData Source:=Sheets("Daten").Range(ges)
因为ges
有Sheets("Autopilot")
作为父级工作表。因此,请尝试:
ActiveChart.SetSourceData Source:=Sheets("Autopilot").Range(ges)
或
ActiveChart.SetSourceData Source:=Sheets("Daten").Range(ges.Address)
取决于您的需求。
答案 3 :(得分:0)
谢谢大家的帮助,我找到了自己的解决方案:
With Sheets(" Daten") ActiveChart.SetSourceData来源:= ges
结束最好的问候