Excel VBA 变量图表范围

问题描述 投票:0回答:4

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

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

有人知道这是如何运作的吗?

致以诚挚的问候

excel vba
4个回答
1
投票

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

无需运行代码,只需运行公式。这样做的另一个好处是它可以在 Excel 在线版和手机版中运行,而 VBA 则不能。

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


0
投票

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


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)

取决于您的需要。


0
投票

我找到了自己的解决方案:

With Sheets("Daten")
ActiveChart.SetSourceData Source:=ges
End With
© www.soinside.com 2019 - 2024. All rights reserved.