0

グラフデータを変更したときに、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」があります。オブジェクトは、エラーコメントのある行でこのプロパティまたはメソッドをサポートしていません。

4

2 に答える 2

0

にエラーがあります

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

次のように変更します。

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

于 2013-03-07T18:49:36.277 に答える
0

これが解決策です::)

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
于 2013-03-12T19:46:14.850 に答える