2013-03-07 216 views
0

有時候,當我更改圖形數據時,excel中的趨勢線標籤未更新。因此我想通過VBA進行更新。我想爲所有表單和圖表中的所有現有趨勢線執行此操作。VBA:如何更新excel中的趨勢線標籤

我的代碼直到現在都不起作用。你會在評論中發現錯誤。

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」。對象不支持該錯誤註釋行中的此屬性或方法。

+0

如何紀念這一問題作爲回答? – kame 2013-03-08 13:28:19

回答

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 
0

有一個在

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

更改錯誤它:

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

+0

但仍然有錯誤。 – kame 2013-03-08 07:34:57

+0

@ kame,你需要告訴我們具體的錯誤 – 2013-03-08 08:13:04

+0

嗨蘭斯,請參閱編輯2.有一個運行時錯誤'438'。對象不支持該錯誤註釋行中的此屬性或方法。 – kame 2013-03-08 08:15:22