改变scatterplot vba excel中特定点的颜色

我想改变散点图左上angular的点的颜色。 我写了一个macros,没有发生错误,但颜色没有改变:/

Sub Kolorowanie() ActiveSheet.ChartObjects("Chart 1").Activate a = ActiveChart.SeriesCollection(1).Values b = ActiveChart.SeriesCollection(1).XValues For i = LBound(a) To UBound(a) If a(i) < 0 And b(i) > 0 Then ActiveSheet.ChartObjects("Chart 1").Activate ActiveChart.SeriesCollection(1).Select ActiveChart.SeriesCollection(1).Points(i).Select With Selection.Format.Fill .Visible = msoTrue .ForeColor.RGB = RGB(255, 0, 0) .Solid End With Else End If Next i End Sub 

任何想法,为什么它不工作?

摆脱Forecolor.RGB或放在这之前,你设置Forecolor.RGB ,我认为这是重写的东西(我已经注意到这个和其他一些错误/无法执行某些行动,即使macroslogging器会使它看起来这些方法应该好好工作)。

 Option Explicit Sub Kolorowanie() Dim cht As Chart Dim srs As Series Dim pt As Point Set cht = ActiveSheet.ChartObjects(1).Chart Set srs = cht.SeriesCollection(1) For Each pt In srs.Points With pt.Format.Fill .Visible = msoTrue '.Solid 'I commented this out, but you can un-comment and it should still work .ForeColor.RGB = RGB(255, 0, 0) End With Next End Sub 

要么:

 For Each pt In srs.Points With pt.Format.Fill .Visible = msoTrue .Solid 'This is the default so including it doesn't do anything, but it should work either way. .ForeColor.RGB = RGB(255, 0, 0) End With Next 

将这个应用到您的代码给我们:

 Sub Kolorowanie() ActiveSheet.ChartObjects("Chart 1").Activate a = ActiveChart.SeriesCollection(1).Values b = ActiveChart.SeriesCollection(1).XValues For i = LBound(a) To UBound(a) If a(i) < 0 And b(i) > 0 Then ActiveSheet.ChartObjects("Chart 1").Activate ActiveChart.SeriesCollection(1).Select ActiveChart.SeriesCollection(1).Points(i).Select With Selection.Format.Fill .Visible = msoTrue .Solid .ForeColor.RGB = RGB(255, 0, 0) End With Else End If Next i End Sub