我有一列单元格(范围A2:A10),其中包含学生的姓名。对于每个学生,我有一个以他们的名字命名的图表,跟踪他们在另一张表中的表现。如果它们的名称出现在单元格列中,我想将图表背景更改为浅红色。
答案 0 :(得分:0)
这是一个相当直接的想法组合。您需要遍历图表,根据列表检查标题,然后更改背景颜色。下面的代码是一个展示这个想法的例子。
在工作表上迭代图表时,首先使用ChartObjects方法。 ChartObject包含对实际图表的引用,您可以在其中获取标题并更改背景。请注意,检查图表的标题没有会引发错误,所以我开始检查Chart.HasTitle。
我正在使用Application.Match来检查范围是否包含标题。如果找不到,将返回错误,因此我正在检查该错误。
最后,如果匹配存在,则通过冗长的属性列表更改图表的背景。如果要更改图表的其他部分,请记录宏以查找正确的属性。
Sub ColorBasedOnTitle()
Dim chtObj As ChartObject
Dim sht As Worksheet
Dim rng_students As Range
'assume active sheet, change if not
Set sht = ActiveSheet
'need to set a reference to the list of names... named range is probably prefered here
Set rng_students = sht.Range("B3:B6")
'loop through all charts on sheet
For Each chtObj In sht.ChartObjects
'if chart has title, check its value
Dim title As String
If chtObj.Chart.HasTitle Then
title = chtObj.Chart.ChartTitle.Text
'use Match to see if title is in list of names
Dim search As Variant
search = Application.Match(title, rng_students, 0)
'see if student is in list, change background if so
If Not IsError(search) Then
chtObj.Chart.ChartArea.Format.Fill.ForeColor.RGB = RGB(255, 0, 0)
End If
End If
Next chtObj
End Sub
这是我的Excel实例的图片,因此您可以看到结果。请注意,我的名为“F”的图表超出了检查名称的范围,这些名称突出显示为灰色以供强调。