Office: (Office 2016) Diagramm mit VBA formatieren

Helfe beim Thema Diagramm mit VBA formatieren in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich habe da ein Problem bei der Formatierung von Diagrammen mit VBA. Offensichtlich funktioniert die Makroaufzeichnung bei... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Lutz Fricke, 22. Juli 2016.

  1. Lutz Fricke Erfahrener User

    Diagramm mit VBA formatieren


    Hallo zusammen,

    ich habe da ein Problem bei der Formatierung von Diagrammen mit VBA.
    Offensichtlich funktioniert die Makroaufzeichnung bei Diagrammen nicht einwandfrei. Lasse ich eine Aufzeichnung eines Makros über ein anderes Diagramm laufen, bekomme ich ein anderes Ergebnis als bei der Aufzeichnung. Bei der Prüfung des aufgezeichneten Codes ist dieser unvollständig oder falsch.

    Nachdem ich etwas Erfahrung mit der VBA-Programmierung habe, wollte ich den Code manuell erstellen. Dazu fehlt mir leider eine entsprechende Referrenz für Office2016. Es hat sich gegenüber den alten Versionen scheinbar doch einiges geändert.

    Kann mir da jemand weiterhelfen?
    Welche Objekte gibt es zur Formatierung von Diagrammen?

    Schon mal vielen Dank für Eure Hilfe,
    Lutz
     
    Lutz Fricke, 22. Juli 2016
    #1
  2. Beverly
    Beverly Erfahrener User
    Hi Lutz,

    formatieren kann man sehr vieles, also müsstest du schon konkreter werden - was genau soll formatiert werden und wie? Hilfreich wäre auch eine hochgeladene Arbeitsmappe mit Ausgangs- und Zielformatierung sowie dein aufgezeichneter Code.

    Bis später,
    Karin
     
    Beverly, 22. Juli 2016
    #2
  3. Lutz Fricke Erfahrener User
    Hallo Karin,

    grundsätzlich geht's um Linien, Füllungen und Ränder der Marker.
    Hab mal nen Code aufgezeichnet:

    ActiveChart.FullSeriesCollection(1).Select
    Selection.Format.Line.Visible = msoFalse
    Range("I13").Select
    '
    ActiveChart.FullSeriesCollection(2).Select
    Selection.Format.Line.Visible = msoFalse
    Range("J11").Select

    Im ersten Fall hab ich den Rand des Markers entfernt, im zweiten Fall die Linie zwischen den einzelnen Markern. Der Code ist aber identisch.

    Unter Excel2007 war das alles easy, aber im 2016'er funktioniert's nicht :-(

    Da ich's noch nie gebraucht habe: Wie lädt man eine Beispieldatei hoch?

    Vielen Dank für die Hilfe,
    Lutz
     
    Lutz Fricke, 25. Juli 2016
    #3
  4. Beverly
    Beverly Erfahrener User

    Diagramm mit VBA formatieren

    Hi Lutz,

    Unter dem Antwortfenster rechts siehst du 3 Schalter - drücke "Erweitert" und du erhältst unterhalb des Antwortfensters das Menü "Zusätzliche Einstellungen". Dort dann Anhänge -> Anhänge verwalten.

    Bis später,
    Karin
     
    Beverly, 25. Juli 2016
    #4
  5. Lutz Fricke Erfahrener User
    Hallo Karin,

    jetzt sollte ne Datei dranhängen.
    Drin ist der Code, mit dem ich dieses und noch mehr Diagramme erzeuge.

    Am Ende von Makro5 werden die Diagramme erzeugt.
    Bei Serie 3 und 4 scheitere ich an der Eliminierung der Marker, bzw. Umrandung.

    Viele Grüße,
    Lutz
     
    Lutz Fricke, 25. Juli 2016
    #5
  6. Beverly
    Beverly Erfahrener User
    Hi Lutz,

    sprich die Datenreihen als Series(-Objekt) an, dann kannst du die Datenreihen besser ansprechen und hast besseren zugriff auf ihre Eigenschaften:

    Code:
    Dim serReihe As Series
    With ActiveSheet.ChartObjects.Add(Anzahl * BreiteMIC * 60, 45, 360, 225).Chart
        .HasLegend = False
        .HasTitle = True
        .Parent.Name = NameDiagramm
        .SetSourceData Source:=Diagrammbereich
        .ChartType = xlLine
        .ChartTitle.Text = MIC
    [COLOR=#008000]    If .SeriesCollection.Count > 0 Then
            For Reihe = .SeriesCollection.Count To 1 Step -1
                .SeriesCollection(Reihe).Delete
            Next Reihe
        End If[/COLOR]
        Set serReihe = .SeriesCollection.NewSeries
        With serReihe
            .XValues = "='" & Mat & "'!R20C" & ActiveCell.Column & ":R" & LetzteZeileMat & "C" & ActiveCell.Column
            .Values = "='" & Mat & "'!R20C" & ActiveCell.Column + 2 & ":R" & LetzteZeileMat & "C" & ActiveCell.Column + 2
            .Name = "='" & Mat & "'!R19C" & ActiveCell.Column + 2
            .MarkerStyle = 8
            With .Format
                .Line.Visible = msoTrue
                .Line.ForeColor.RGB = RGB(255, 192, 0)
                .Fill.Visible = msoFalse
            End With
        End With
        Set serReihe = .SeriesCollection.NewSeries
        With serReihe
            .XValues = "='" & Mat & "'!R20C" & ActiveCell.Column & ":R" & LetzteZeileMat & "C" & ActiveCell.Column
            .Values = "='" & Mat & "'!R20C" & ActiveCell.Column + 3 & ":R" & LetzteZeileMat & "C" & ActiveCell.Column + 3
            .HasDataLabels = False
            .Name = "='" & Mat & "'!R19C" & ActiveCell.Column + 3
            .MarkerStyle = 8
            With .Format
                .Line.Visible = msoTrue
            End With
        End With
        Set serReihe = .SeriesCollection.NewSeries
        With serReihe
            .Values = "='" & Mat & "'!R20C" & ActiveCell.Column + 5 & ":R" & LetzteZeileMat & "C" & ActiveCell.Column + 5
            .HasDataLabels = False
            .Name = "='" & Mat & "'!R19C" & ActiveCell.Column + 5
            [COLOR=#0000ff].MarkerStyle = xlNone[/COLOR]
            .Format.Line.ForeColor.RGB = RGB(255, 0, 0)
        End With
        Set serReihe = .SeriesCollection.NewSeries
        With serReihe
            .Values = "='" & Mat & "'!R20C" & ActiveCell.Column + 8 & ":R" & LetzteZeileMat & "C" & ActiveCell.Column + 8
            .HasDataLabels = False
            .Name = "='" & Mat & "'!R19C" & ActiveCell.Column + 8
            [COLOR=#0000ff].MarkerStyle = xlNone[/COLOR]
            .Format.Line.ForeColor.RGB = RGB(146, 208, 80)
        End With
    End With
    Set serReihe = Nothing

    Ich habe auch deine Schleife für das Löschen von Datenreihen korrigiert: es muss immer von der letzten bis zur ersten rückwärts gelöscht werden, sonst kommt es zu einem Laufzeitfehler.

    Bis später,
    Karin
     
    Zuletzt bearbeitet: 25. Juli 2016
    Beverly, 25. Juli 2016
    #6
  7. Beverly
    Beverly Erfahrener User
    Hi Lutz,

    Ergänzung: man muss nicht unbedingt die Datenreihe als Series ansprechen - es geht auch so:

    Code:
        With .SeriesCollection.NewSeries
            .Values = "='" & Mat & "'!R20C" & ActiveCell.Column + 8 & ":R" & LetzteZeileMat & "C" & ActiveCell.Column + 8
            .HasDataLabels = False
            .Name = "='" & Mat & "'!R19C" & ActiveCell.Column + 8
            .MarkerStyle = xlNone
            .Format.Line.ForeColor.RGB = RGB(146, 208, 80)
        End With
    
    

    Aber wie schon geschrieben: wenn man sie als Series anspricht, hat man generell bessere Möglichkeiten, auf die Eigenschaften zuzugreifen.

    Bis später,
    Karin
     
    Beverly, 25. Juli 2016
    #7
  8. Lutz Fricke Erfahrener User

    Diagramm mit VBA formatieren

    Hallo Karin,

    das war, was ich gesucht habe.

    Wo ist der Unterschied zwischen Series und SeriesCollection? Was ist der Vorteil von Series?

    Die Schleife zum Löschen funktioniert auch in der positiven Richtung. Wobei man bei Excel/VBA 2016 nie so genau weiß.
    Hab die Schleife einbauen müssen, nachdem mit einem Mal das neue Diagramm nicht mehr nur eine Datenreihe, sondern 5 gehabt hat.

    Schon mal vielen Dank für Deine Hilfe,
    Lutz
     
    Lutz Fricke, 26. Juli 2016
    #8
  9. Beverly
    Beverly Erfahrener User
    Hi Lutz,

    Excel ist in der VBA-Ansprache bzw. Handhabung der Elemente leider häufig inkonsequent und versionsabhängig - das merkt man eben daran, dass Arbeitsschritte zwar aufgezeichnet werden, dann aber nicht mehr reproduzierbar sind und Fehler erzeugen. Mittels der Zuweisung über Set wird SeriesCollection zu einem Objekt und Objekte sind unabhängig von der internen Verwendung der Eigenschaften, sodass man sie globaler ansprechen kann.

    Was das Löschen von Datenreihen betrifft: falls vor dem Erstellen des Diagramms mit deinem Code z.B. ein anderer Diagrammtyp verwendet wurde, behält Excel diesen Diagrammtyp im "Gedächtnis" und falls dann noch der Cursor bei Diagrammerstellung ein einem Zellbereich mit mehreren Daten steht, werden dem Diagramm auch mehrere Datenreihen zugewiesen - ist halt der Automatismus von Excel, gegen den man nichts machen kann. Dass beim Vorwärzszählen der Schleife kein Fehler ausgelöst wird, kann nicht 100%ig garantiert werden (zumindest in anderen Excelversionen) - deshalb würde ich sicherheitshalber immer rückwärts zählen.

    Bis später,
    Karin
     
    Beverly, 26. Juli 2016
    #9
Thema:

Diagramm mit VBA formatieren

Die Seite wird geladen...
  1. Diagramm mit VBA formatieren - Similar Threads - Diagramm VBA formatieren

  2. VBA Diagramm-Daten aktualisieren

    in Microsoft Excel Hilfe
    VBA Diagramm-Daten aktualisieren: Hallo, ich habe folgendes Problem. Ich habe eine Tabelle, die sich jeden Tag um eine Zeile automatisch erweitern soll mit dem aktuellen Datum und aktuellen Werten. Das funktioniert auch soweit....
  3. Diagrammfarbe gemäß Zellfarbe

    in Microsoft Excel Hilfe
    Diagrammfarbe gemäß Zellfarbe: Hallo zusammen, im Rahmen meiner Abschlussarbeit habe ich eine Frage an euch. Es geht um ein Tool in dem Kraftwerksdaten durch die Auswahl verschiedener Parameter verglichen werden können. In...
  4. EXCEL Horizontale Achse schneidet - Wert mit Zellbezug mittels VBA

    in Microsoft Excel Hilfe
    EXCEL Horizontale Achse schneidet - Wert mit Zellbezug mittels VBA: Hallo zusammen, als VBA-Neuling stehe ich vor einer für mich großen Herausforderung:confused:. Für ein Dashboard muss ich verschiedene Diagramme mit spezifischen Achsenwert (Horizontale Achse...
  5. bedingte Zellfarbe auf Diagramm übertragen

    in Microsoft PowerPoint Hilfe
    bedingte Zellfarbe auf Diagramm übertragen: Hallo zusammen, ich habe ein Diagramm erstellt, in dem die Zellfarbe über eine bedingte Formatierung per Drop Down ausgewählt wird. Ich möchte das die bedingte Zellfarbe dann auch im Diagramm...
  6. Diagramm über Werteliste per Makro erstellen

    in Microsoft Excel Hilfe
    Diagramm über Werteliste per Makro erstellen: Ich versuche per Makro ein Diagramm zu erstellen. Ich möchte die Werte der Kurve direkt als Liste in das Diagramm schreiben und nicht über einen Bezug auf einen Tabellenbereich. Ich habe für...
  7. VBA: Per Makro erstelle Diagramme richtig formatieren

    in Microsoft Excel Hilfe
    VBA: Per Makro erstelle Diagramme richtig formatieren: Hallo, ich habe hier eine x-zeilige Liste mit Daten. Neben die Liste kommt pro Zeile ein Button zur Diagrammerstellung. Das Linien--Diagramm soll mir Felder X1 bis X2 darstellen, dazu den...
  8. Diagramm mit VBA erstellen und formatieren

    in Microsoft Excel Hilfe
    Diagramm mit VBA erstellen und formatieren: Hallo zusammen. Ich habe ein Problem und hoffe jemand kann mir helfen. Es geht um folgendes: Ich habe zwei Datenreihen und eine Reihe für die x-Werte. Anhand von VBA möchte ich nun ein...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden