Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1884to1888
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
Inhaltsverzeichnis

Makro zum Ändern der Diagrammfarbe

Makro zum Ändern der Diagrammfarbe
27.05.2022 09:10:29
Rob98
Hallo zusammen,
ich habe folgendes Problem. Ich möchte mit meiner erstellen Excel Makro für ein Kreisdiagramm die Farben anpassen. Die Daten für die RGB Farben stehen in Excel Zellen. Aktuell habe ich eine Makro geschrieben die hervorragend für meine Balkendiagramme funktioniert, jedoch nicht für Kreisdiagramme mit einem Datensatz. Die Funktion SeriesCollection zählt leider nicht die richtigen Daten im Diagramm. Gibt es hier andere Funktionen bzw. eine bessere Möglichkeit die Farben dynamisch anzupassen?
Hier die Datei:
https://www.herber.de/bbs/user/153286.xlsm
Hier noch der Makrocode:

Sub test()
Dim chtDiagramm As Chart
Dim i As Integer, j As Integer, intColor As Integer, intSeries As Integer
Dim strName As String
'Farben Diagramm setzen
Set chtDiagramm = Worksheets("Test").ChartObjects("Testdiagramm").Chart
intSeries = chtDiagramm.SeriesCollection.Count
For i = 1 To intSeries
strName = chtDiagramm.SeriesCollection(i).Name
For j = 5 To Worksheets("Test").Range("H2").Value + 4
If Worksheets("Test").Cells(j, 8).Value = strName Then
With chtDiagramm.SeriesCollection(strName)
.Format.Fill.Visible = msoTrue
.Format.Fill.ForeColor.RGB = RGB(Worksheets("Test").Cells(j, 6).Value, Worksheets("Test").Cells(j, 7).Value, Worksheets("Test").Cells(j, 8).Value)
End With
End If
Next j
Next i
End Sub
Viele Grüße
Rob98

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro zum Ändern der Diagrammfarbe
27.05.2022 11:59:34
peterk
Hallo

Option Explicit
Sub test()
Dim chtDiagramm As Chart
Dim i As Integer
Dim intSeries As Integer
'Farben Diagramm setzen
Set chtDiagramm = Worksheets("Test").ChartObjects("Testdiagramm").Chart
intSeries = chtDiagramm.SeriesCollection(1).Points.Count
For i = 1 To intSeries
With chtDiagramm.SeriesCollection(1).Points(i).Format.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(Worksheets("Test").Cells(4 + i, 9).Value, _
Worksheets("Test").Cells(4 + i, 10).Value, _
Worksheets("Test").Cells(4 + i, 11).Value)
End With
Next i
End Sub
Peter

AW: Makro zum Ändern der Diagrammfarbe
27.05.2022 15:59:14
Rob98
Hey, ich bräuchte noch eine If um abzuprüfen ob die Werte des Diagramms mit der Zelle übereinstimmen. Wie in meinem Beispielcode, da die Daten nicht geordnet vorliegen. Die Umwandlung in chtDiagramme.SeriesCollection(1).Points(i).Name gibt nicht den Wert aus den ich für die If Bedingung benötige. Hast du da eine Idee?
Anzeige
AW: Makro zum Ändern der Diagrammfarbe
27.05.2022 16:59:36
Beverly
Hi,
wozu brauchst du den Namen des Punktes? Die Punkte sind im Diagramm doch in der Reihenfolge benannt wie die Daten im Tabellenblatt stehen - es geht also immer der Reihe nach. Oder können die Punkte in Spalte B in einer anderen Reihenfolge vorliegen als sie in Spalte H aufgeführt sind? Dann sollte es mit diesem Code gehen:

Sub DiaFormatieren()
Dim intZaehler As Integer
Dim strFormel As String
Dim rngSuche As Range
With Worksheets("Test").ChartObjects("Testdiagramm").Chart
strFormel = .SeriesCollection(1).Formula
strFormel = Split(strFormel, ",")(1)
For intZaehler = 1 To .SeriesCollection(1).Points.Count
Set rngSuche = Columns(8).Find(Range(strFormel).Cells(intZaehler), lookat:=xlWhole)
.SeriesCollection(1).Points(intZaehler).Format.Fill.ForeColor.RGB = _
RGB(rngSuche.Offset(0, 1), _
rngSuche.Offset(0, 2), _
rngSuche.Offset(0, 3))
Next intZaehler
End With
End Sub
Bis später
Karin

Anzeige
AW: Makro zum Ändern der Diagrammfarbe
27.05.2022 17:08:09
Rob98
Ja, die Daten können auch nicht in der Reihenfolge vorliegen. Darum war meine Idee mit einer Schleife darüber zu laufen und den Inhalt mit einer Value Funktion abzugleichen. Kennst du vielleicht eine Funktion mit der das möglich wäre?
AW: Makro zum Ändern der Diagrammfarbe
27.05.2022 17:16:55
Beverly
Wozu eine Schleife benutzen? Aus der Zelle in Spalte B kannst du doch den dort eingetragenen Namen auslesen, diesen in Spalte H suchen und aus der gefundenen Zelle mittels Offset die gewünschte Farbe auslesen - genau das macht mein Code doch...
Bis später
Karin

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige