【问题标题】:VBA: How to update a trendline label in excelVBA:如何在excel中更新趋势线标签
【发布时间】:2013-03-07 18:41:32
【问题描述】:

有时,当我更改图形数据时,excel 中的趋势线标签没有更新。因此我想通过 VBA 更新。我想对所有工作表和图表中的所有现有趋势线执行此操作。

我的代码到现在为止都不起作用。您会在评论中找到错误。

    Sub Auto_Open()
        Debug.Print "Start"
        Dim oChart As ChartObject, nSheet As Integer, nChart As Integer
        nSheet = 1
        Do While nSheet <= Sheets.Count
            nChart = 1
            Do While nChart <= Sheets(nSheet).ChartObjects.Count
                nSeriesCollection = 1
                'Debug.Print Sheets(nSheet).ChartObjects(nChart).SeriesCollection.Count
                'Error in next line
                Do While nSeriesCollection <= Sheets(nSheet).ChartObjects(nChart).SeriesCollection.Count
                    Debug.Print "nSheet: " & nSheet & " nChart: " & nChart
                    Set oChart = Sheets(nSheet).ChartObjects(nChart)
                    oChart.Activate
                    'Next line has to changed too
                    ActiveChart.SeriesCollection(1).Trendlines(1).Select
                    With Selection
                        .DisplayRSquared = False
                        .DisplayEquation = False
                        .DisplayRSquared = True
                        .DisplayEquation = True
                    End With            
                    nSeriesColletion = nSeriesColletion + 1
                Loop
                nChart = nChart + 1
            Loop
            nSheet = nSheet + 1
        Loop
    End Sub 

########################################################################

存在运行时错误“438”。错误注释所在行中的对象不支持此属性或方法。

【问题讨论】:

  • 如何将此问题标记为已回答?

标签: vba excel graph trendline


【解决方案1】:

有错误

ActiveChart.SeriesCollection(1).Trendlines(1).Select

改成:

ActiveChart.SeriesCollection(1).Trendlines(1).DataLabel.Select

【讨论】:

  • 嗨 Lance,请参阅编辑 2。存在运行时错误“438”。错误注释所在行中的对象不支持此属性或方法。
【解决方案2】:

解决方法如下: :)

Sub Auto_Open()
    Debug.Print "###########################################"
    Debug.Print "Start"
    Dim oChart As ChartObject, nSheet As Integer, nChart As Integer
    nSheet = 1
    Do While nSheet <= Sheets.Count
        Debug.Print "Sheet: " & nSheet
        nChart = 1
        Do While nChart <= Sheets(nSheet).ChartObjects.Count
            Debug.Print " ChartObjects: " & nChart
            nSeriesCollection = 1
            Do While nSeriesCollection <= Sheets(nSheet).ChartObjects(nChart).Chart.SeriesCollection.Count
                Debug.Print "  SeriesCollection: " & nSeriesCollection

                Sheets(nSheet).ChartObjects(nChart).Chart.SeriesCollection(nSeriesCollection).Trendlines(1).DisplayEquation = True

                nSeriesCollection = nSeriesCollection + 1
            Loop
            nChart = nChart + 1
        Loop
        nSheet = nSheet + 1
    Loop
End Sub

【讨论】:

    猜你喜欢
    • 2019-02-21
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 2016-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多