2015-04-05 3 views
-1

У меня есть столбец ячеек (диапазон A2: A10), который содержит имена студентов. Для каждого ученика у меня есть диаграмма, названная после их имени, которая отслеживает их выступления на другом листе. Я хотел бы изменить фон диаграммы на светлый красный цвет, если их имена появятся в столбце ячеек.Выделение графика на основе диапазона ячеек и заголовков диаграмм

ответ

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

Смежные вопросы