Excel:将图表引用为ChartObjects&Chart vs Shapes

我遇到了一个设置图表的辅助轴的最小和最大比例属性的墙设置 – 不断得到一个“对象没有这个属性”的错误。 我修好了,但我想知道如何。

经过了多less小时的search和尝试不同的选项(三,三个小时)之后,我随意决定通过Shapes集合而不是ChartObjects集合来引用图表,并且工作。

太好了:

ActiveSheet.Shapes(1).Chart.Axes(xlValue,xlSecondary).MinimumScale = cMin 

和坏:

 ActiveSheet.ChartObjects(1).Chart.Axes(xlValue,xlSecondary).MinimumScale = cMin 

但我可以设置其他属性。 例如,下面的代码行工作:

 ActiveSheet.ChartObjects(1).Chart.Axes(xlValue,xlSecondary).AxisTitle.Text = "Current (A)" 

从MSDN文档中, Shapes(1)ChartObjects(1)都返回一个Chart对象,但是当我通过ChartObjects集合访问Chart时,我无法访问所有的属性。 也就是说,当我设置图表时,我可以设置Axes方法中的所有属性

 Dim cht as Chart Set cht = ActiveSheet.Shapes(1).Chart 

但如果我把图表设置为

 Dim cht as Chart Set cht = ActiveSheet.ChartObjects(1).Chart 

所以我的问题是,为什么这种差异? 这是VBA语法的一些隐藏的细微差别,或者更可能是我的机器的一个弱点?

在Windows 7框上的Excel 2013