Mettre en surbrillance un graphique basé sur une gamme de cellules et les titres de diagramme

J'ai une colonne de cellules (Gamme A2: A10) qui contient des noms d'élèves. Pour chaque étudiant, j'ai un tableau intitulé après leur nom qui suit leurs performances dans une autre feuille. J'aimerais changer l'arrière-plan du graphique en couleur rouge pâle si leurs noms apparaissent dans la colonne des cellules.

C'est une combinaison d'idées assez simple. Vous devez effectuer une itération dans les charts, vérifier le titre sur une list et modifier la couleur d'arrière-plan. Le code ci-dessous est un exemple pour montrer l'idée.

En itérant à travers les charts sur une feuille, vous commencez par la méthode ChartObjects. Le ChartObject contient une reference au graphique actuel où vous pouvez get le titre et modifier l'arrière-plan. Notez que la vérification du Titre d'un Graphique sans celui-ci créera une erreur, alors je commence par un contrôle de Chart.HasTitle.

J'utilise Application.Match pour vérifier si la gamme contient le titre. Cela renverra une erreur si elle n'est pas trouvée, alors je vérifie cette erreur.

Enfin, si la correspondance existe, vous modifiez l'arrière-plan du graphique à l'aide d'une longue list de propriétés. Si vous souhaitez modifier une partie différente du graphique, enregistrez une macro pour find la bonne propriété.

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 Ssortingng 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 

Voici une image de mon instance Excel afin que vous puissiez voir le résultat. Notez que mon graphique intitulé "F" est en dehors de la gamme des noms vérifiés qui sont mis en surbrillance en gris pour l'accent.

graphiques après le code