我想更改散点图左上角的点颜色。 我写了一个宏,没有发生错误,但颜色没有改变:/
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
为什么它不起作用的任何想法?
答案 0 :(得分: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