2017-02-17 113 views
0

我對vba編程頗爲陌生,所以請耐心等待。在循環中添加圖例顏色

我想使圖中的這兩條曲線的線條和標記爲紅色,但我的腳本只着色第一條曲線。如何在循環中使用選擇(或不同的東西)?

With ActiveChart 
l = 1 
    Do Until l = 3 
     .SeriesCollection.NewSeries 
     .SeriesCollection(l).Name = Sheets("Data").Range("A" & 8 + l) 
     .SeriesCollection(l).XValues = Sheets("Data").Range("B7:F7") 
     .SeriesCollection(l).Values = Sheets("Data").Range("B" & 19 + l + LotAmount & ":F" & 19 + l + LotAmount) 
     With Selection 
     .Border.LineStyle = xlContinuous 
     .Border.Color = RGB(255, 0, 0) 
     .MarkerBackgroundColor = RGB(255, 0, 0) 
     .MarkerForegroundColor = RGB(255, 0, 0) 
     End With 
     l = l + 1 
    Loop 
End With 

這可能是小菜一碟,所以我希望這是一個容易解決你們:)

問候

朗尼

回答

1

你的代碼是不明確的。您可以通過幾個圖表要循環,但開始

with activechart 

所以你的系列名稱,值和顏色只適用於ActiveChart。順便說一下,您使用With selection,但您之前並沒有真正使用.Select。下面是一些代碼,你可以改了一下:

Option Explicit 
Dim sht as worksheet 
Dim cht as ChartObject 

Set sht = Thisworkbook.Sheets("Your sheet name") ' Sheet "Data"? 
For Each cht in sht.chartObjects 
    If cht.name = "Chart4" or cht.name = "Chart5" or cht.name = "Chart6" Then 
     With cht.chart.SeriesCollection[(l)] 
      .NewSeries 
      .Name = sht.range("A" & 8 [+ l]) 
      .XValues = sht.Range("B7:F7") 
      .Values = Sheets("Data").Range("B" & 19 [+ l + LotAmount] & ":F" & 19 [+ l + LotAmount]) 
     End With 
     With cht.chart.ChartArea 
      .Border.LineStyle = xlContinuous 
      .Border.Color = RGB(255, 0, 0) 
      .MarkerBackgroundColor = RGB(255, 0, 0) 
      .MarkerForegroundColor = RGB(255, 0, 0) 
     End With 
    End If 
Next 

沒有嘗試,但你可以使用它作爲一個開始。不要猶豫,任何疑問。希望這可以幫助!

PS:請始終使用顯式的選項(使變量聲明強制性) 編輯:只有最後三個圖表

+0

感謝您的回答,你寫的是什麼使一個很大的意義。我對上面的代碼有疑問。我的表格中有6個活動圖形,只需要將其應用於最後三個(圖表4,圖表5和圖表6)。當我讀到你的代碼時,它會改變所有的圖表? – La82

+0

@JiheL你可以使用'Select Case cht.name',然後使用'Case「Chart4」,「Chart5」,「Chart6」' –

+0

@ShaiRado是的,但這不是正確的方法,我們將在每個'case'中使用相同的代碼3次 – JiheL