首页 文章

使用图表时避免使用激活和选择(Excel)

提问于
浏览
5

我知道在Excel VBA中使用 ActivateSelect 不是最佳做法 . 我已经看到了在处理Ranges时如何避免它们的参考文献(例如:LINK) . 在处理 ChartObjects (或一般情况下除了Ranges之外的任何其他内容)时,如何避免它们?

例如,使用 ActivateSelect 修改y轴上的最大值的方法看起来像这样(有效):

ActiveSheet.ChartObjects("MyChart").Activate
        ActiveChart.Axes(xlValue).Select
        ActiveChart.Axes(xlValue).MaximumScale = Range("MaxVal").Value

为了避免使用 ActivateSelect ,我厌倦了声明变量,并使用它们,但这不起作用:

Dim ws As Worksheet
     Set ws = Worksheets("Chart")
     With ws.ChartObjects("MyChart").Axes(xlValue)
        .MaximumScale = Range("MaxVal").Value
     End With

上面的代码运行(即不抛出错误),但轴上的比例不会改变 . 我错过了什么?


编辑:使用这个“longwinded”版本:

With Worksheets("Chart").ChartObjects("MyChart").Chart.Axes(xlValue)
        .MaximumScale = Range("MaxVal").Value
    End With

2 回答

  • 2

    这最终奏效了:

    With Worksheets("Chart").ChartObjects("MyChart").Chart.Axes(xlValue)
                .MaximumScale = Range("MaxVal").Value
            End With
    
  • 1

    至于你的问题#1:在处理ChartObjects(或者除了Ranges之外的任何东西)时,我怎么能避免它们?你使用的方法是正确的 . 你的结论不起作用是由另一个错误引起的 .

    至于你的问题#2:我错过了什么?, ChartObject 没有方法 Axes . 您所谓的"longwinded"版本实际上是 the 方式 .

    PS:我可以考虑让非工作代码无错误运行的唯一原因是忽略错误的错误处理程序 . 我得到预期的“运行时错误'438':对象不支持此属性或方法” .

相关问题