首页 文章

避免在Excel VBA for Chart中使用Activate

提问于
浏览
0

这里对Excel VBA很新......非常类似于这篇文章:Avoiding the use of Activate and Select when working with charts (Excel),我试图避免使用Activate来对大型工作簿中的一些图表进行小的更改 . 我正在为大量图表执行此任务,因此我希望尽可能减少运行时间,并且听说select / activate函数会降低宏的速度 .

我的示例代码如下所示:

ActiveSheet.ChartObjects("Chart 3").Activate
ActiveChart.FullSeriesCollection(1).XValues = "=Leb!$C$2:$G$2"

我试图用以下内容替换这两行,因为这对我来说具有逻辑意义:

ActiveSheet.ChartObjects("Chart 3").FullSeriesCollection(1).XValues = "=Leb!$C$2:$G$2"

此代码在运行时导致错误,因此我尝试使用上面提到的帖子显示的WITH格式:

With Worksheets("Chart").ChartObjects("Chart 3").Chart.XValues = "=Leb!$C$2:$G$2"
End With

这也会引发错误 .

我知道我可能会犯一个小的语法错误,但是任何人都能够提供任何有关我做错的信息吗? (我之前从未使用过WITH函数,所以对它的一些一般见解也会非常有用 . )

提前致谢 .

1 回答

  • 2

    差不多了...

    With Worksheets("Chart").ChartObjects("Chart 3").Chart
        .SeriesCollection(1).XValues = "=Leb!$C$2:$G$2"
    End With
    

    XValues 属于 Series 对象,而不是图表(指您的上一个代码示例) .

    编辑:

    Dim arrCharts, cht
    arrCharts = Array("Chart 3", "Chart 4", "Chart 5", "Chart 7")
    
    For Each cht In arrCharts
        With Worksheets("Chart").ChartObjects(cht).Chart
            .SeriesCollection(1).XValues = "=Leb!$C$2:$G$2"
        End With
    Next cht
    

相关问题