2013-03-07 214 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