2015-04-05 71 views

回答

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」的我的圖表超出了選中名稱的範圍,其中突出顯示爲灰色。

charts after code runs

相關問題