Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Diagramm Punkte einfärben

Diagramm Punkte einfärben
23.05.2013 10:56:01
Philipp
Schönen Guten Tag,
ich schreibe zur Zeit ein Tool basiernd auf Excel / VBA, in welchem ich relativ viele Punkte in ein Diagramm zeichen lassen möchte. Nun habe ich habe allerdings noch ein zusätzliches Attribut für jedes Koordinatenpaar, welches die Farbe des Punktes beeinflussen soll. Je nach Inhalt der Zelle (S,M,L), soll der Punkt entweder rot, gelb oder grün werden.
Ich habe mich bereits in verschiedenen Forum umgesehen und versucht verschiedene Codes an mein Problem anzupassen, wobei ich aber bisher noch keinen Erfolg verbuchen konnte.
Hier mal mein bisheriger Code:
Sub change_color_points()
Dim Pt As Point
Dim Rng As Range
Dim x As Integer
Dim Y As Integer
Dim MyColor
Set Rng = ActiveSheet.Range("E:E")
x = 1
Y = 2
Application.ScreenUpdating = False
For Each Pt In Portfolio.ChartObjects("Portfolio").Chart.SeriesCollection(2).Points
Portfolio.ChartObjects("Portfolio").Activate
ActiveChart.SeriesCollection(2).Points(x).Select
If Range("E" & Y).Value = "S" Then
MyColor = 3
ElseIf Range("E" & Y).Value = "M" Then
MyColor = 5
Else
MyColor = 7
End If
With Selection.Border
.ColorIndex = MyColor
.Weight = xlThick
.LineStyle = xlContinuous
End With
With Selection
.MarkerBackgroundColorIndex = xlAutomatic
.MarkerForegroundColorIndex = xlAutomatic
.MarkerStyle = xlNone
.MarkerSize = 5
.Shadow = False
End With
x = x + 1
Y = Y + 1
Next Pt
Application.ScreenUpdating = True
End Sub

Hier mal meine bisherige Datei, damit Ihr mein Problem besser verstehen könnt.
https://dl.dropboxusercontent.com/u/40317881/Forum.xlsm
Achja ich benutze Office for Mac 2011
Schon einmal vielen Dank für die Hilfe!
Beste Grüße
Philipp

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Diagramm Punkte einfärben
23.05.2013 11:13:13
Klaus
Hallo Phillip,
nicht direkt Themenbezogen und ich bin auch nicht der Diagrammspezi, daher lasse ich den Thead offen. Nur ein paar Hinweise:
- in deinem Beitrag steht keine Frage!
- du solltest auf .select und .activate verzichten wann immer möglich
- herber.de hat eine eigene Upload Funktion. Verweise auf andere Filehoster sind hier nicht so gern gesehen.
Grüße,
Klaus M.vdT.

Anzeige
AW: Diagramm Punkte einfärben
23.05.2013 11:46:58
EtoPHG
Hallo Philipp,
1. Du benutzt For Each Pt In ..., das ist schon mal gut. Was aber ganz schlecht ist, das Objekt Pt wird nie mehr innerhalb der For-Schlaufe benutzt.
2. Du Springst mit .Activate/.Select wild von Objekt zu Objekt und das hier
Portfolio.ChartObjects("Portfolio").Activate
kann schon mal gar nicht funktionieren!
3. Durch .Select wechselst du den Objekt-Kontext und benutzt dann unreferenzierte Objekte wie Range, was z.B. in einem Diagrammblatt schon gar nicht funktionieren kann.
3. Du verzichtest auf jegliche Mitteilung von Fehlermeldungen, sei es des Compilers/Debuggers. Das macht die Fehleranalyse sehr aufwändig und schwierig.
4. Deiner Beispielmappe fehlt ein Chartobjekt im Diagrammblatt "Portfolio", als kann man auch nicht nachvollziehen, was du genau machen willst und das Nachzubauen macht keinen Sinn.
Also: Lade eine brauchbare Mappe (mit Diagramm) direkt ins Forum.
Gruess Hansueli

Anzeige
AW: Diagramm Punkte einfärben
23.05.2013 19:57:08
fcs
Hallo Philip,
nach dein Makro etwas umgestrickt unter Excel 2010.
Gruß
Franz
Sub change_color_points()
Dim objChart As Chart, objSerie As Series, wks As Worksheet
Dim x As Integer
Dim MyColor As Long
Application.ScreenUpdating = False
Set wks = Worksheets("Kalkulation")
Set objChart = Charts("Portfolio")
Set objSerie = objChart.SeriesCollection(2)
For x = 1 To objSerie.Points.Count
'Wert in Spalte E (5) des Punktes prüfen
Select Case wks.Cells(x + 1, 5).Value
Case "S"
MyColor = 3 ' rot
Case "M"
MyColor = 6 'gelb
Case Else
MyColor = 4 'grün
End Select
With objSerie.Points(x)
.MarkerForegroundColorIndex = 1 'xlColorIndexAutomatic      'Linienfarbe Marker
.MarkerBackgroundColorIndex = MyColor 'Füllfarbe Marker
.MarkerSize = 5
.Shadow = False
End With
Next x
Application.ScreenUpdating = True
Set objChart = Nothing: objSerie = Nothing: wks = Nothing
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Diagramm Punkte in Excel einfärben


Schritt-für-Schritt-Anleitung

Um die Punkte in einem Excel-Diagramm je nach Wert unterschiedlich einzufärben, kannst du folgendes VBA-Makro verwenden. Es basiert auf den Informationen aus dem Forum und wurde an die Bedürfnisse angepasst:

  1. Öffne dein Excel-Dokument und aktiviere den Visual Basic for Applications (VBA) Editor mit Alt + F11.
  2. Füge ein neues Modul hinzu, indem du im Projektfenster mit der rechten Maustaste auf dein Projekt klickst und "Modul einfügen" wählst.
  3. Kopiere den folgenden Code in das neue Modul:
Sub change_color_points()
    Dim objChart As Chart, objSerie As Series, wks As Worksheet
    Dim x As Integer
    Dim MyColor As Long
    Application.ScreenUpdating = False
    Set wks = Worksheets("Kalkulation")
    Set objChart = Charts("Portfolio")
    Set objSerie = objChart.SeriesCollection(2)

    For x = 1 To objSerie.Points.Count
        Select Case wks.Cells(x + 1, 5).Value
            Case "S"
                MyColor = 3 ' rot
            Case "M"
                MyColor = 6 ' gelb
            Case Else
                MyColor = 4 ' grün
        End Select

        With objSerie.Points(x)
            .MarkerForegroundColorIndex = 1 ' Linienfarbe Marker
            .MarkerBackgroundColorIndex = MyColor ' Füllfarbe Marker
            .MarkerSize = 5
            .Shadow = False
        End With
    Next x

    Application.ScreenUpdating = True
    Set objChart = Nothing: objSerie = Nothing: wks = Nothing
End Sub
  1. Stelle sicher, dass du die richtigen Arbeitsblatt- und Diagrammnamen verwendest.
  2. Führe das Makro aus, um die Punkte im Diagramm abhängig von den Werten in Spalte E einzufärben.

Häufige Fehler und Lösungen

  • Fehler: Diagramm nicht gefunden
    Stelle sicher, dass das Diagramm den Namen "Portfolio" hat. Du kannst den Namen im Diagrammformatierungsbereich überprüfen.

  • Fehler: Markierung funktioniert nicht
    Vermeide die Verwendung von .Select und .Activate, um Fehler zu minimieren.

  • Problem: Falsche Farben werden angezeigt
    Überprüfe die Werte in Spalte E und stelle sicher, dass sie korrekt sind (S, M oder L).


Alternative Methoden

Falls du kein VBA nutzen möchtest, kannst du auch die bedingte Formatierung in Excel verwenden, um die Daten in einem Diagramm visuell hervorzuheben. Dies ist jedoch auf die Daten und nicht direkt auf die Diagrammpunkte anwendbar.

  1. Wähle deine Daten aus.
  2. Gehe zu "Start" -> "Bedingte Formatierung".
  3. Wähle "Regeln verwalten" und erstelle neue Regeln basierend auf den Werten in den Zellen.

Praktische Beispiele

Für ein Portfolio-Diagramm in Excel kannst du folgendes Beispiel verwenden:

Wert Farbe
S rot
M gelb
L grün

Mit dem oben genannten Makro kannst du sicherstellen, dass die Punkte im Diagramm entsprechend diesen Werten gefärbt werden.


Tipps für Profis

  • Nutze die Debug.Print-Anweisung im VBA-Code, um Werte während der Laufzeit zu überprüfen.
  • Speichere deine Arbeitsmappe regelmäßig, besonders vor Änderungen im VBA, um Datenverlust zu vermeiden.
  • Experimentiere mit den MarkerStyle-Eigenschaften, um die Darstellung deiner Punkte weiter anzupassen.

FAQ: Häufige Fragen

1. Kann ich die Farben ändern?
Ja, du kannst die Werte in MyColor im Code nach deinen Wünschen anpassen.

2. Welche Excel-Version benötige ich für diese Methoden?
Die vorgestellten Methoden sind mit Excel 2010 und höher kompatibel. Achte darauf, dass du die entsprechenden Funktionen in deiner Version nutzt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige