【发布时间】:2016-02-28 21:10:37
【问题描述】:
如果 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
【问题讨论】:
-
对于初学者,我会将
vbYellow更改为vbRed,将vbRed更改为vbBlack。否则,代码 not 会为您做什么您期望它做的事情? -
我建议在学习 VBA 时掌握对象类型和引用,而不是所有
.select和parent.parent编码。您可以使用点并遍历,但如果您需要经常操作某些对象,那么很好地引用它可以 i) 简化您的调试,ii) 简化您的代码编写,iii) 提高您对对象模型的了解,以及 iv) 获得智能感知为您提供对象的可用方法和属性... -
@MacroMarc 感谢您的建议,您知道我可以使用哪些特定材料来了解有关 VBA 中对象的更多信息吗?
-
MSDN 有时没有很好的解释,例子很奇怪,但它是最完整的参考(因为VBA是MS语言)。一旦您了解 Excel 对象中的一般情况,Intellisense 会非常有用