-1
我有一列包含學生姓名的單元格(範圍A2:A10)。對於每個學生,我都有一張名字在他們的名字後面跟着他們的表演。如果圖表背景的名稱出現在單元格列中,我想將其更改爲淺紅色。根據一系列單元格和圖表標題突出顯示圖表
我有一列包含學生姓名的單元格(範圍A2:A10)。對於每個學生,我都有一張名字在他們的名字後面跟着他們的表演。如果圖表背景的名稱出現在單元格列中,我想將其更改爲淺紅色。根據一系列單元格和圖表標題突出顯示圖表
這是一個相當直接的想法組合。您需要遍歷圖表,根據列表檢查標題,並更改背景顏色。下面的代碼是一個展示這個想法的例子。
在工作表中迭代圖表時,首先使用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」的我的圖表超出了選中名稱的範圍,其中突出顯示爲灰色。