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

Forumthread: per VBA viele Diagramm-Datenreihen formatieren

per VBA viele Diagramm-Datenreihen formatieren
Bernd
Guten Abend allerseits,
ich habe es tatsächlich geschafft, in ein Diagramm 235 Datenreihen mit Diagrammtyp xlXYScatterLines einzubinden. Nun suche ich eine Lösung, um diese Datenreihen in einer bestimmten Art und Weise zu formatieren. Händisch viel Arbeit, deswegen möchte ich die Datenreihe per VBA ansprechen und den einzelnen Datenpunkten jeder Datenreihe die gewünschte Formatierung mitgeben. Ich scheitere aber an der variablen Ansprache der Datenreihen. Ein Makro folgender Art führt nicht zum Erfolg, weshalb ich für Gegenvorschläge sehr dankbar wäre:
Sub Formataendern()
Dim Reihennummer as Integer
For Reihennummer = 1 to 235
ActiveSheet.ChartObjects("Diagramm 1").Select
ActiveChart.SeriesCollection(Reihennummer).Select
ActiveChart.SeriesCollection(Reihennummer).Points(1).Select
With Selection
.MarkerBackgroundColorIndex = 44
.MarkerForegroundColorIndex = 1
.MarkerStyle = xlCircle
.MarkerSize = 5
End With
ActiveChart.SeriesCollection(Reihennummer).Points(2).Select
With Selection
.MarkerBackgroundColorIndex = 39
.MarkerForegroundColorIndex = 1
.MarkerStyle = xlCircle
.MarkerSize = 7
End With
Next Reihennummer
End Sub

Kann mir jemand helfen?
Viele Grüße
Bernd B.
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: per VBA viele Diagramm-Datenreihen formatieren
23.08.2009 19:49:55
Daniel
HI
hier mal ein Beispiel:
das Array, mit dem die Farben und Grössen definiert werden, musst du halt so gross machen und befüllen, wie maximal Punkte vorkommen können. Ansonsten ist die Anzahl der Datenreihen und der Punkte voll flexibel
Sub Formataendern()
Dim DatReihe As Long
Dim PointNr As Long
Dim PT_Farb(5) As Long
Dim PT_Size(5) As Long
PT_Farb(1) = 44
PT_Farb(2) = 39
'usw
PT_Size(1) = 5
PT_Size(2) = 7
'usw
With ActiveSheet.ChartObjects("Diagramm 2").Chart
For DatReihe = 1 To .SeriesCollection.Count
With .SeriesCollection(DatReihe)
For PointNr = 1 To .Points.Count
With .Points(PointNr)
.MarkerBackgroundColorIndex = PT_Farb(PointNr)
.MarkerForegroundColorIndex = 1
.MarkerStyle = xlCircle
.MarkerSize = PT_Size(PointNr)
End With
Next PointNr
End With
Next DatReihe
End With
End Sub

Anzeige
AW: per VBA viele Diagramm-Datenreihen formatieren
23.08.2009 21:33:03
Bernd
Danke für Deine Hilfe, Daniel. Ich komme aber noch nicht klar.
Wofür steht in der Variablen-Deklaration PT_Farb und PT_Size jeweils "(5)"?
Ich habe den Code auf meine spezifische Situation angepasst, in dem ich PT_Farb(2), (3) und (4) sowie PT_Size(2), (3) und (4) Werte für Farbe und Größe zugeordnet habe. Nach den Definitionen habe ich einfach nur in "Diagramm 1" (so heisst es bei mir) geändert und die Schleifen für Datenreihen und Datenpunkte nicht bei 1 sondern bei 94 bzw. 2 starten lassen und den Teil ".SeriesCollection.Count" bzw. ".Point.Count" durch die Endwerte 154 bzw. 4 ersetzt.
Funktioniert aber nicht wie gewünscht und es wird aus den Datenreihen nur ein Punkt farblich und in der Größe verändert. Was kann ich tun?
Hier der konkrete Code:
Sub Formataendern()
Dim DatReihe As Long
Dim PointNr As Long
Dim PT_Farb(5) As Long
Dim PT_Size(5) As Long
PT_Farb(2) = 46
PT_Farb(3) = 45
PT_Farb(4) = 44
'usw
PT_Size(2) = 7
PT_Size(3) = 6
PT_Size(4) = 5
'usw
With ActiveSheet.ChartObjects("Diagramm 1").Chart
For DatReihe = 94 To 154
With .SeriesCollection(DatReihe)
For PointNr = 2 To 4
With .Points(PointNr)
.MarkerBackgroundColorIndex = PT_Farb(PointNr)
.MarkerForegroundColorIndex = 1
.MarkerStyle = xlCircle
.MarkerSize = PT_Size(PointNr)
End With
Next PointNr
End With
Next DatReihe
End With
End Sub

Anzeige
AW: per VBA viele Diagramm-Datenreihen formatieren
23.08.2009 22:21:12
Daniel
HI
das 5 steht dafür, daß es in einer Serie maximal 5 Punkte gibt, die ich ändern will.
haben die Datenreihen mehr Punkte, muss man das anpassen.
btw. nur Code alleine kann man nicht testen, man muss auch wissen, wie die Ausgangsdaten aussehen und was als Ergebnis rauskommen soll.
Sprich, Beispieldatei ist immer hilfreich.
Gruß, Daniel
Anzeige
gelöst
24.08.2009 11:51:22
Bernd
Hallo Daniel,
jetzt wird es peinlich, denn ich sage: mea culpa! Dein Vorschlag funktioniert natürlich einwandfrei und ich habe gestern einfach nicht gemerkt, daß ich die falschen Datenreihen auf Veränderung durch den Code untersucht habe. Pausen von der Monitorarbeit machen wohl doch ihren Sinn.
Fazit: Vielen Dank, durch Deine Hilfe spare ich eine Menge Arbeit, Nerven und reduziere das Fehlerpotential!
Beste Grüße
Bernd B.
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Datenreihen in Excel-Diagrammen mit VBA formatieren


Schritt-für-Schritt-Anleitung

Um die Datenreihen in Excel mit VBA zu formatieren, kannst du folgenden Schritten folgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke im Projektfenster mit der rechten Maustaste auf "VBAProject (dein Arbeitsblattname)" > Einfügen > Modul.

  3. Schreibe das VBA-Skript: Füge den folgenden Code in das Modul ein:

    Sub Formataendern()
       Dim DatReihe As Long
       Dim PointNr As Long
       Dim PT_Farb(5) As Long
       Dim PT_Size(5) As Long
       PT_Farb(1) = 44
       PT_Farb(2) = 39
       PT_Size(1) = 5
       PT_Size(2) = 7
    
       With ActiveSheet.ChartObjects("Diagramm 1").Chart
           For DatReihe = 1 To .SeriesCollection.Count
               With .SeriesCollection(DatReihe)
                   For PointNr = 1 To .Points.Count
                       With .Points(PointNr)
                           .MarkerBackgroundColorIndex = PT_Farb(PointNr)
                           .MarkerForegroundColorIndex = 1
                           .MarkerStyle = xlCircle
                           .MarkerSize = PT_Size(PointNr)
                       End With
                   Next PointNr
               End With
           Next DatReihe
       End With
    End Sub
  4. Passe den Code an: Ändere die Farben und Größen im Array PT_Farb und PT_Size nach deinen Bedürfnissen. Achte darauf, dass die Arrays groß genug sind, um die maximale Anzahl der Datenpunkte zu berücksichtigen.

  5. Führe das Makro aus: Schließe den VBA-Editor und führe das Makro über Entwicklertools > Makros aus.


Häufige Fehler und Lösungen

  • Falsche Diagrammbezeichnung: Stelle sicher, dass der Name des Diagramms im Code mit dem tatsächlichen Namen in Excel übereinstimmt (z. B. "Diagramm 1").

  • Unzureichende Array-Größe: Wenn du mehr als 5 Punkte in einer Datenreihe hast, musst du die Größe der Arrays PT_Farb und PT_Size anpassen, um alle Punkte zu berücksichtigen.

  • Fehlerhafte Schleifenstartwerte: Achte darauf, die Schleifen für Datenreihen und Datenpunkte korrekt zu starten, damit alle gewünschten Punkte bearbeitet werden.


Alternative Methoden

Falls du keine VBA-Programmierung verwenden möchtest, kannst du die Datenreihen in Excel auch manuell formatieren:

  1. Klicke auf die gewünschte Datenreihe im Diagramm.
  2. Wähle die Punkte aus, die du anpassen möchtest.
  3. Klicke mit der rechten Maustaste und wähle Datenpunkt formatieren.
  4. Ändere die Farbe und den Markerstil direkt im Formatierungsbereich.

Praktische Beispiele

Hier ist ein Beispiel zur Verwendung des Codes für ein Diagramm mit 235 Datenreihen, wobei die Datenpunkte unterschiedlich formatiert werden sollen:

Sub Formataendern()
    Dim DatReihe As Long
    Dim PointNr As Long
    Dim PT_Farb(5) As Long
    Dim PT_Size(5) As Long
    ' Farb- und Größenwerte anpassen
    PT_Farb(1) = 44
    PT_Size(1) = 5
    ' Diagramm formatieren
    With ActiveSheet.ChartObjects("Diagramm 1").Chart
        For DatReihe = 1 To 235
            With .SeriesCollection(DatReihe)
                For PointNr = 1 To 5 ' Beispiel: max. 5 Punkte
                    With .Points(PointNr)
                        .MarkerBackgroundColorIndex = PT_Farb(PointNr)
                        .MarkerForegroundColorIndex = 1
                        .MarkerStyle = xlCircle
                        .MarkerSize = PT_Size(PointNr)
                    End With
                Next PointNr
            End With
        Next DatReihe
    End With
End Sub

Tipps für Profis

  • Dokumentiere deinen Code: Füge Kommentare hinzu, um den Code leichter verständlich zu machen und später einfacher darauf zurückzugreifen.

  • Verwende Arrays effizient: Wenn du eine große Anzahl von Datenreihen hast, überlege, ob du dynamische Arrays oder sogar Collections verwenden kannst, um die Verwaltung der Farben und Größen zu vereinfachen.

  • Teste in einer Kopie: Arbeite immer in einer Kopie deiner Datei, um unerwartete Änderungen zu vermeiden, während du mit VBA experimentierst.


FAQ: Häufige Fragen

1. Warum funktioniert mein VBA-Code nicht?
Stelle sicher, dass alle Objekte (z. B. Diagrammnamen) korrekt referenziert werden und dass die Arrays die richtige Größe haben.

2. Wie viele Datenpunkte kann ich in einer Excel-Datenreihe haben?
Die maximale Anzahl von Datenpunkten in einer Excel-Datenreihe hängt von der Excel-Version ab, in der Regel sind es jedoch mehrere tausend Punkte.

3. Kann ich auch andere Diagrammtypen formatieren?
Ja, der Code kann leicht angepasst werden, um andere Diagrammtypen zu formatieren, solange du die entsprechenden Eigenschaften verwendest.

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