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

时间:2015-06-17 14:45:42

标签: excel vba excel-vba

我有一个带有以下签名的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

我收到此错误:

enter image description here

但如果我使用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等,以防止在宏运行时用户点击时搞砸了。

0 个答案:

没有答案