我对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
这可能是小菜一碟,所以我希望这对你来说很容易解决。伙计们:)
最好的问候
朗尼
答案 0 :(得分: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:始终使用Option Explicit(强制执行变量声明) 编辑:只有最后三个图表