为什么不能将图表传递给我的子程序
我有一个SubRoutine与以下签名:
Sub SetChartGraphScale(theChart As Chart, theMin, theMax)
在另一个子例程中,我可以调用SetChartGraphScale,它的行为如预期的那样:
Set theChartObject = .ChartObjects.Add( _ Left:=0, Top:=50, Width:=.100, Height:=50) SetChartGraphScale theChartObject.Chart, 0, 30
但是当我尝试从不同的子例程中调用它时:
Set theChart = Charts.Add SetChartGraphScale theChart, 0, 30
我得到这个错误:
但是,如果我使用ActiveChart,一切工作正常:
Set theChart = Charts.Add SetChartGraphScale ActiveChart, 0, 30
根据https://msdn.microsoft.com/en-us/library/office/ff196568(v=office.14).aspx,Charts.Add返回一个图表,所以我不明白为什么我不能通过它通过SetChartGraphScale。 我可以发送ActiveChart作为解决方法,但我真的想明白为什么这不是我认为应该的行为。
我试图尽可能避免ActiveSheet,ActiveChart等,以防止如果用户在macros运行时点击周围的事情。