2017-02-17 121 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