Excel VBA变量图表范围

时间:2018-06-15 07:40:46

标签: excel vba

我有一个数据表,我每周都会添加一列,我尝试编写宏来更改图表来源。

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)。

任何人都知道这将如何运作?

最好的问候

4 个答案:

答案 0 :(得分:1)

VBA无需创建动态图表范围。可以使用范围名称中的公式轻松完成。看看Jon Peltier的网站,特别是如何绘制一直在增长的数据集的最后x行。

无需运行代码,只需运行公式。这有一个额外的好处,它可以在Excel上在线和在手机上工作,而VBA则不会。

https://peltiertech.com/Excel/Charts/DynamicLast12.html

答案 1 :(得分:0)

Teylyn使用动态定义名称的答案适用于您,或者如果您不想执行公式,您可以将单元格范围转换为Excel表格(INSERT ... TABLE或Crtl T)。根据该表格制作图表,您附加到表格底部的任何数据都将自动合并到图表中。再也不需要VBA。

答案 2 :(得分:0)

这不起作用: ActiveChart.SetSourceData Source:=Sheets("Daten").Range(ges)

因为gesSheets("Autopilot")作为父级工作表。因此,请尝试:

ActiveChart.SetSourceData Source:=Sheets("Autopilot").Range(ges)

ActiveChart.SetSourceData Source:=Sheets("Daten").Range(ges.Address)

取决于您的需求。

答案 3 :(得分:0)

谢谢大家的帮助,我找到了自己的解决方案:

With Sheets(" Daten")  ActiveChart.SetSourceData来源:= ges  

结束

最好的问候