我一直在研究带有动态图表的Excel模型。本质上,用户应该能够更改图表上绘制的周期-非常简单。但是,我在使VBA正常工作方面一直存在问题(我没有收到错误,但是没有达到我的预期)。 我正在尝试做的事情:
在我下面的代码中,Excel似乎忽略了Rng2
中的参数,即它从53列开始绘制到77列,而不是我打算从77列到89。
另外,如果我用硬编码的引用替换Rng3
的内容,它也可以正常工作(即Rng3 = .Range("$AZ5662:$AZ5667,$BY$5662:$CJ$5667")
)。
怎么了?
非常感谢您!
最好的问候, 菲利普
Set Cht = .ChartObjects("Chart 14").Chart
Set Rng1 = .Range(Cells(5662, 52), Cells(5663 + Worksheets("Control").Range("F20"), 52))
Set Rng2 = .Range(Cells(5662, 77), Cells(5663 + Worksheets("Control").Range("F20"), 88))
Set Rng3 = .Range(Rng1, Rng2)
Cht.SetSourceData _
Source:=Rng3
Cht.PlotBy = xlRows
答案 0 :(得分:1)
使用Range(Range1,Range2)
时,它将获取Range1
的左上单元格和Range2
的右下单元格以建立范围。
因此,您的Rng3的结果是一个从Cells(5662,52)
到Cells(5663+X,88)
结束的正方形,这不是您想要的。
您可以尝试另一种称为Union( Rng1 , Rng2 , .... )
的方法
它将存储给定的每个Range对象的所有边界,因此它可以是几个单独的区域,甚至可以是一个奇怪的形状,例如心脏或其他物体:P