Excel VBA线颜色/标记线颜色

我正在写一些VBA代码来修改Excel图表。 对于散点图,我需要修改标记线的颜色,有时还要修改连线的颜色。 我可以手动执行这两个操作,但是当我录制一个macros时,尽pipe结果有很大不同,但这两个操作的结果都是相同的。

任何想法如何区分代码中的线条颜色和标记线颜色?

当我logging自己改变标记线的颜色时,就创build了这个代码

Sub Macro3() ' ' Macro3 Macro ' ' ActiveChart.SeriesCollection(2).Select With Selection.Format.Line .Visible = msoTrue .ForeColor.ObjectThemeColor = msoThemeColorAccent1 .ForeColor.TintAndShade = 0 .ForeColor.Brightness = 0 End With End Sub 

当我logging自己改变连接标记的线的颜色时创build了这个代码

 Sub Macro4() ' ' Macro4 Macro ' ' 'Change the Line Color ActiveChart.SeriesCollection(2).Select With Selection.Format.Line .Visible = msoTrue .ForeColor.ObjectThemeColor = msoThemeColorAccent1 .ForeColor.TintAndShade = 0 .ForeColor.Brightness = 0 End With End Sub 

连线的线条颜色是Series.Format.Line.ForeColor 。 标记线的颜色是Series.MarkerForegroundColor 。 但至less在Excel 2007中,设置Series.Format.Line.ForeColor会出现问题。 看例子:

 Sub Macro3() Dim oChart As Chart Dim oSeries As Series Set oChart = ActiveChart Set oSeries = oChart.SeriesCollection(2) oSeries.Format.Line.Weight = 5 'Line.Weigth works ever oSeries.Format.Line.Visible = msoFalse 'for Line.ForeColor getting to work we have to cheat something oSeries.Format.Line.Visible = msoTrue oSeries.Format.Line.ForeColor.RGB = RGB(0, 255, 0) 'now it works oSeries.MarkerSize = 15 oSeries.MarkerBackgroundColor = RGB(255, 0, 0) 'marker background oSeries.MarkerForegroundColor = RGB(0, 0, 255) 'marker foreground (lines around) End Sub 

ActiveChart是一个散点图。 这与Excel 2007testing。

从Excel 2013中,线条颜色和标记线颜色很容易区分,因为线颜色是使用.Border属性设置的,而标记颜色是使用.MarkerBackgroundColor.MarkerForegroundColor属性设置的。

所以下面会给你白色的标记,它们之间有一个红色的边框和黑色的连接线:

 ActiveChart.SeriesCollection(1).Select With Selection .Border.LineStyle = xlContinuous .Border.Color = RGB(0,0,0) .MarkerBackgroundColor = RGB(255, 255, 255) .MarkerForegroundColor = RGB(255, 0, 0) End With 

注意:如果使用Selection.Format.Line.Weight ,注意这适用于默认边界和连接线厚度

你可以使用

ActiveChart.SeriesCollection(1).MarkerForegroundColor = -2