为什么不能将图表传递给我的子程序

我有一个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运行时点击周围的事情。