Changing the colors of the specific dots in scatterplot vba excel

后端 未结 1 1521
孤街浪徒
孤街浪徒 2021-01-15 05:56

I would like to change the color of dots in top left part of the scatterplot. I wrote a macro, no errors occurred but the color did not change :/

Sub Kolorow         


        
相关标签:
1条回答
  • 2021-01-15 06:42

    Get rid of the .Solid or put this before you set the Forecolor.RGB, I think that is overriding something (I have noticed this and some other bugs/inabilities to perform certain actions even as the Macro Recorder would make it seem these methods should work properly).

    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
    

    Or:

    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
    

    Applying this to your code gives us:

    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
    
    0 讨论(0)
提交回复
热议问题