繁体   English   中英

Excel VBA变量图表范围

[英]Excel VBA variable Chart Range

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

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

最后一行不起作用。 我尝试了没有结尾的范围(仅.ges)。

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

最好的祝福

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

无需运行代码,只需运行公式即可。 这样做还有一个好处,那就是它可以在Excel在线和电话中使用,而VBA则不能。

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

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

这不起作用: 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)

根据您的需要。

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

With Sheets(“ Daten”)ActiveChart.SetSourceData源:= ges结尾为

最好的祝福

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM