我遇到了一个墙设置图表的辅助轴的最小和最大刻度属性 - 保持得到“对象没有此属性”错误 . 我修好了,但我想知道怎么做 .

经过几个小时的谷歌搜索和尝试不同的选项(三 . 三个愚蠢的小时),我随意决定通过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集合访问图表时,我无法访问所有属性 . 也就是说,当我将图表设置为时,我能够在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