Vba 如何更改Excel图形中的标记颜色?
我有一个带标记的Excel线条图 如果标记低于阈值,我需要更改标记的颜色。Vba 如何更改Excel图形中的标记颜色?,vba,excel,graph,excel-charts,Vba,Excel,Graph,Excel Charts,我有一个带标记的Excel线条图 如果标记低于阈值,我需要更改标记的颜色。 例如,下图是标记高于阈值的每月结果。如果结果低于某一点,我需要标记来改变颜色(第二张图) 我知道如何手动更改标记颜色。这能自动完成吗? 提前感谢您的帮助。下面是测试 Sub setMarkerColor() Dim myCht As ChartObject Dim n As Long Dim adr As String Dim p As Double Application
例如,下图是标记高于阈值的每月结果。如果结果低于某一点,我需要标记来改变颜色(第二张图) 我知道如何手动更改标记颜色。这能自动完成吗? 提前感谢您的帮助。下面是测试
Sub setMarkerColor()
Dim myCht As ChartObject
Dim n As Long
Dim adr As String
Dim p As Double
Application.ScreenUpdating = False
For Each myCht In ActiveSheet.ChartObjects
With myCht.Chart
adr = .SeriesCollection(1).Formula '<~~ First grapth, if 2nd change to .SeriesCollection(2).Formula
adr = Split(adr, ",")(2)
For n = 1 To Range(adr).Cells.Count
p = Range(adr)(n)
If p < 15 Then '<~~ set value 15
'.SeriesCollection(1).Points(n).HasDataLabel = True
With .SeriesCollection(1).Points(n) '<~~ First grapth, if 2nd change to .SeriesCollection(2).Points(n)
.MarkerForegroundColor = RGB(0, 255, 0)
.MarkerBackgroundColor = RGB(255, 0, 0)
End With
End If
Next n
End With
Next myCht
Application.ScreenUpdating = True
End Sub
Sub-setMarkerColor()
将myCht设置为图表对象
长
将adr变暗为字符串
将p变暗为双精度
Application.ScreenUpdating=False
对于ActiveSheet.ChartObjects中的每个myCht
用myCht.图表
adr=.SeriesCollection(1).Formula'这可以用VBA来完成:MyChart.FullSeriesCollection(x).Points(y).Format.Fill.ForeColor.RGB=RGB(255,0,0)
其中x
是系列集合,y
是您想要更改的集合中的点谢谢您。李,我运行了您提供的代码,并一直得到了一个答案编译错误:外部过程无效,因此我不清楚需要编辑什么。很抱歉,我修改了导致该错误的代码。最后一个问题:在代码中,如果标记低于阈值,如何指定要发生的颜色更改?例如,该图表基于以下结果:99.6%、99.9%、99.5%、99.5%、99.9%和99.7%。如果结果高于99.0%,则点(标记)保持绿色。如果低于99.0%(例如98%),则点(标记)应变为红色。如何进行此修改?
Sub setMarkerColor()
Dim myCht As ChartObject
Dim n As Long
Dim adr As String
Dim p As Double
Dim myVal As Long
Application.ScreenUpdating = False
For Each myCht In ActiveSheet.ChartObjects
With myCht.Chart
adr = .SeriesCollection(1).Formula '<~~ First grapth, if 2nd change to .SeriesCollection(2).Formula
adr = Split(adr, ",")(2)
For n = 1 To Range(adr).Cells.Count
p = Range(adr)(n)
If p >= 0.99 Then '<~~ set value 0.99
myVal = RGB(0, 255, 0)
Else
myVal = RGB(255, 0, 0)
End If
'.SeriesCollection(1).Points(n).HasDataLabel = True
With .SeriesCollection(1).Points(n) '<~~ First grapth, if 2nd change to .SeriesCollection(2).Points(n)
.MarkerForegroundColor = RGB(0, 255, 0)
.MarkerBackgroundColor = myVal
End With
Next n
End With
Next myCht
Application.ScreenUpdating = True
End Sub