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