我有一个带有以下签名的SubRoutine:
Sub SetChartGraphScale(theChart As Chart, theMin, theMax)
在另一个SubRoutine中,我可以调用SetChartGraphScale,它的行为符合预期:
Set theChartObject = .ChartObjects.Add( _
Left:=0, Top:=50, Width:=.100, Height:=50)
SetChartGraphScale theChartObject.Chart, 0, 30
但是当我尝试从不同的SubRoutine调用它时:
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等,以防止在宏运行时用户点击时搞砸了。