2013-04-12 43 views
2

我想更改散点图左上角的点的颜色。 我写了一个宏,没有发生任何错误,但颜色没有改变:/更改scatterplot vba中特定点的颜色excel

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 

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

回答

8

摆脱.Solid,或者你设置Forecolor.RGB,我认为这是压倒一切的东西把这个之前(我已经注意到这一点,一些其他错误/无能执行某些操作,即使作为宏记录将使它看起来这些方法应该正常工作)。

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 
+1

感谢的人!有用 ! :) – haver24

+1

大 - 很高兴它的作品。如果问题解决了,请考虑“接受”答案。干杯! –