Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1624to1628
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Diagramm Farben mit Makro verändern
28.05.2018 10:02:43
Sarah
Guten Morgen :-)
Hier eine Beispiel-Tabelle: https://www.herber.de/bbs/user/121853.xlsm
Wenn Excel Diagramme erstellt, werden die Farben pro Wert/Kategorie ja zufällig ausgewählt. Ich hätte aber gerne für eine Kategorie, der ein Wert zugeordnet ist, immer die gleiche Farbe, deshalb habe ich mir folgendes Makro zugelegt:
Sub DiagrammFormat()
Dim i As Long
Dim Farbe As Integer
With ActiveChart.SeriesCollection(1)
For i = 1 To .Points.Count
Select Case WorksheetFunction.Index(.XValues, i)
Case "Verderb"
Farbe = 6   ' Gelb
Case "zu viel"
Farbe = 5  ' Blau
Case "Transport"
Farbe = 3   ' Rot
Case "Sonstiges"
Farbe = 13  ' Violett
Case "zu spät"
Farbe = 46  ' Orange
End Select
.Points(i).Interior.ColorIndex = Farbe
Next
End With
End Sub
Allerdings funktioniert das Makro NICHT bei gestapelten Daten, und NICHT bei Treemap-Diagrammen, was ich aber beides verwende.

Hat mir jemand einen Tipp, was ich machen könnte, um mein Problem zu lösen?
Vielen Dank schonmal im Voraus.
Grüße
Sarah

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
VBA unterschiedliche Diagrammtypen färben
28.05.2018 11:40:38
Beverly
Hi Sarah,
in deiner Mappe gibt es folgende Diagrammtypen:
Kreis, gruppierte Säulen, Sunburst, gestapelte Säulen, gestapelte Balken, nicht jedoch das von dir genannte Treemap-Diagramm.
Zu deinem Problem ist folgendes zu sagen:
1. die beiden gestapelten Diagrammtypen haben nicht 1 Datenreihe mit mehreren Datenpunkten, sondern mehrere Datenreihen mit 1 Datenpunkt - deshalb muss für diesen Diagrammtyp die Schleife über alle Datenreihen und nicht über alle Datenpunkte laufen. Da das gestapelte Balkendiagramm andere Werte in der Darstellung hat als die gestapelte Säule, muss dieses außern vor bleiben, oder du machst einen extra Code dafür. Du musst also den Code je nach Diagramm-Typ unterteilen.
2. das Sunburst-Diagramm in deiner Mappe lässt sich farblich nicht per VBA bearbeiten - wenn du stattdessen ein Kreis(Dougnut)-Diagramm verwendest, ist das dagegen möglich, obwohl die Darstellung der Beschriftung für diesen Diagrammtyp sicherlich optisch nicht so "schön" ist wie bei einem Sunburst-Diagramm.
Außerdem würde ich generell nicht ColorIndex verwenden sondern Color.
Sub DiagrammFormat()
Dim i As Long
Dim Farbe As Long
Dim chrDia As ChartObject
Dim serReihe As Series
For Each chrDia In ActiveSheet.ChartObjects
Select Case chrDia.Chart.ChartType
Case xlColumnStacked
' Schleife über alle Datenreihen
For Each serReihe In chrDia.Chart.SeriesCollection
Select Case serReihe.Name
Case "Verderb"
Farbe = 65535   ' Gelb
Case "zu viel"
Farbe = 16711680  ' Blau
Case "Transport"
Farbe = 255   ' Rot
Case "Sonstiges"
Farbe = 8388736  ' Violett
Case "zu spät"
Farbe = 26367  ' Orange
End Select
serReihe.Interior.Color = Farbe
Next serReihe
Case xlDoughnut, xlPie, xlColumnClustered
' Schleife über alle Datenpunkte
With chrDia.Chart.SeriesCollection(1)
For i = 1 To .Points.Count
Select Case WorksheetFunction.Index(.XValues, i)
Case "Verderb"
Farbe = 65535   ' Gelb
Case "zu viel"
Farbe = 16711680  ' Blau
Case "Transport"
Farbe = 255   ' Rot
Case "Sonstiges"
Farbe = 8388736  ' Violett
Case "zu spät"
Farbe = 26367  ' Orange
End Select
.Points(i).Interior.Color = Farbe
Next
End With
End Select
Next chrDia
End Sub

Der Code läuft über alle Diagramme, wobei keines der Diagramme selektiert werden muss.


Anzeige
AW: VBA unterschiedliche Diagrammtypen färben
28.05.2018 12:08:00
Sarah
Hallo Beverly,
vielen Dank für die schnelle und kompetente Antwort :-) .
Hab den Code ausprobiert und er klappt bei dem gestapelten Balken, Doughnut, Kreis und Säulendiagramm.
Gibt es für die gestapelten Säulen & ein Treemap-Diagramm dann keine Lösung, wie ich das mit dem Umfärben machen könnte?
AW: VBA unterschiedliche Diagrammtypen färben
28.05.2018 12:51:55
Beverly
Hi Sarah,
selbstverständlich funktioniert der Code auch für gestapelte Säulen - und zwar ist für diesen Diagrammtyp die folgende Case-Anweisung zuständig: Case xlDoughnut, xlPie, xlColumnClustered
Was NICHT geht ist das Sunburst - dafür hatte ich eine Alternative abngeboten (Doughnut). Ob es für ein Treemap-Diagramm eine Lösung gibt, kann ich so nicht sagen, dazu müsstest du ein Beispiel bereitstellen.


Anzeige
AW: VBA unterschiedliche Diagrammtypen färben
28.05.2018 14:30:18
Sarah
Ah, jetzt geht mir ein Licht auf... Jetzt klappt alles, außer natürlich das Treemap-Diagramm.
Hab jetzt nochmal die Excel-Datei aktualisiert und mit einem Treemap-Diagramm hochgeladen:
https://www.herber.de/bbs/user/121857.xlsm
Vielleicht gibt es dafür ja doch eine Lösung?
AW: VBA unterschiedliche Diagrammtypen färben
28.05.2018 15:58:21
Beverly
Beim Treemap-Diagramm habe ich nur die Möglichkeit gefunden, die Beschriftungslabel auszulesen, was natürlich ziemlich kompliziert ist, da dort 3 Angaben möglich sind und es verschiedene Kombinationen geben kann, für das Auslesen jedoch nur die Kategorie notwendig ist. Man kann es sicher realisieren aus der Kombination die Rubrik auszulesen, aber ich bin der Einfachheit halber mal davon ausgegangen, dass in deinem Fall die Beschriftungslabel vorhanden sind und nur die Kategorie angezeigt wird.
Du musst für das Treemap-Diagramm eine weitere Case-Anweisung verwenden:
             Case xlTreemap
' Schleife über alle Datenpunkte
With chrDia.Chart.SeriesCollection(1)
For i = 1 To .Points.Count
Select Case .Points(i).DataLabel.Caption
Case "Verderb"
Farbe = 65535   ' Gelb
Case "zu viel"
Farbe = 16711680  ' Blau
Case "Transport"
Farbe = 255   ' Rot
Case "Sonstiges"
Farbe = 8388736  ' Violett
Case "zu spät"
Farbe = 26367  ' Orange
End Select
.Points(i).Format.Fill.ForeColor.RGB = Farbe
Next
End With


Anzeige
AW: VBA unterschiedliche Diagrammtypen färben
29.05.2018 07:39:51
Sarah
Klasse, vielen vielen Dank für die Mühe!
Eine Frage hätte ich da noch zu Farben in VBA, gibt es da eine Liste mit allen Farben und ihren jeweiligen Werten?
AW: VBA unterschiedliche Diagrammtypen färben
29.05.2018 07:58:21
Beverly
Seit Version 2007 bietet Excel über 1 Mio unterschiedliche Farben/Farbnuancen an - was für einen Sinn würde eine Farbliste da machen? Der einfachste Weg, eine gewünschte Farbnummer zu ermitteln ist, eine Zelle entsprechend zu formatieren und die Nummer dann per VBA auszulesen mittels ActiveCell.Interior.Color


AW: VBA unterschiedliche Diagrammtypen färben
29.05.2018 08:14:57
Sarah
Ach so. Und wie geht das? So hat es nämlich nicht funktioniert:
Sub Neu()
ActiveCell.Interior.Color
End Sub

Anzeige
MsgBox ActiveCell.Interior.Color - o.w.T.
29.05.2018 09:20:18
Beverly


AW: Diagramm Farben mit Makro verändern
29.05.2018 08:36:50
Sarah
Sorry für die vielen Fragen, aber mindestens eine hätte ich da noch...
Habe jetzt folgendes Makro:
Sub Treemap()
Dim i As Long
Dim Farbe As Long
Dim chrDia As ChartObject
Dim serReihe As Series
For Each chrDia In ActiveSheet.ChartObjects
Select Case chrDia.Chart.ChartType
Case xlTreemap 'für Treemap-Diagramme
' Schleife über alle Datenpunkte
With chrDia.Chart.SeriesCollection(1)
For i = 1 To .Points.Count
Select Case .Points(i).DataLabel.Caption
Case "zu viel"
Farbe = 9592886  ' Blau
Case "falscher Artikel"
Farbe = 14408946  ' Rosa
Case "Verderb"
Farbe = 5066944 'Dunkelrot
Case "Transportschaden"
Farbe = 9420794  ' Orange
Case "Sonstiges"
Farbe = 8421504 'Grau
End Select
.Points(i).Format.Fill.ForeColor.RGB = Farbe
Next
End With
End Select
Next chrDia
End Sub

Wie muss ich das Makro verändern, dass nur das Diagramm, dass aktuell ausgewählt ist, verändert wird?
Anzeige
AW: Diagramm Farben mit Makro verändern
29.05.2018 09:39:07
Beverly

Sub Treemap()
Dim i As Long
Dim Farbe As Long
If ActiveChart.ChartType = xlTreemap Then 'für Treemap-Diagramm
' Schleife über alle Datenpunkte
With ActiveChart.SeriesCollection(1)
For i = 1 To .Points.Count
Select Case .Points(i).DataLabel.Caption
Case "zu viel"
Farbe = 9592886  ' Blau
Case "falscher Artikel"
Farbe = 14408946  ' Rosa
Case "Verderb"
Farbe = 5066944 'Dunkelrot
Case "Transportschaden"
Farbe = 9420794  ' Orange
Case "Sonstiges"
Farbe = 8421504 'Grau
End Select
.Points(i).Format.Fill.ForeColor.RGB = Farbe
Next
End With
End If
End Sub

Beachte: wenn kein Diagramm selektiert ist, wird ein Laufzeitfehler ausgegeben.


Anzeige

70 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige