如果X轴恰好是某个标签,我试图找到一种方法(如果可能的话)将数据标签的文本颜色更改为红色。
我遇到的问题是我的图表是动态的(每天通过PowerPivot刷新,并且日期和其他切片器可以更改图表中显示的数据),所以即使我将数据标签着色为红色,也可以使用图表刷新后,它恢复原来的黑色字体。
例如,在下图中,我有一个图表,它按照已打开的天数跟踪票证;目标是在45天内解决所有门票;因此,当图表显示“45+”部分中的任何数据时,我希望该数据标签的字体为红色。
我的图表示例:
在我的研究中,我能够找到并修改一些使所有数据标签变红的代码,但我对使用VBA操作图表非常陌生,并希望得到一些帮助。我到目前为止的代码:
Sub ChrtTest()
Dim i As Long
Sheets("Dashboard").Select
ActiveSheet.ChartObjects("DB_Chrt_1").Activate
ActiveChart.PlotArea.Select
With ActiveChart
For i = 1 To .SeriesCollection.Count
With .SeriesCollection(i).Format.Fill
Select Case .Parent.Parent.Name
Case "45+"
.Visible = msoTrue
With .Parent.Parent
.ApplyDataLabels
With .DataLabels
.Position = xlLabelPositionOutsideEnd
.Font.Color = vbYellow
End With
End With
Case Else
.Visible = msoTrue
With .Parent.Parent
.ApplyDataLabels
With .DataLabels
.Position = xlLabelPositionOutsideEnd
.Font.Color = vbRed
End With
End With
End Select
End With
Next i
End With
End Sub
答案 0 :(得分:1)
一些代码可以帮助您入门:
Sub template()
Dim pc As Chart
Set pc = Sheets("Dashboard").ChartObjects("DB_Chrt_1").Chart
Dim ax As Axis
Set ax = pc.Axes(xlCategory)
Dim dSet As Series
Set dSet = pc.SeriesCollection(1)
Dim dPoints As Points
Set dPoints = dSet.Points
pc.ApplyDataLabels
For i = 1 To dPoints.Count
If ax.CategoryNames(i) = "45+" Then
With dPoints(i).DataLabel.Format.TextFrame2.TextRange.Characters
.Font.Fill.ForeColor.RGB = RGB(255, 0, 0)
End With
End If
Next i
End Sub
这应该将dataLabel文本设置为红色。您也可以使用其他属性