我有一个数据表,我每周添加一列,我尝试编写宏来更改图表源。
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 则不能。
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 Source:=ges
End With