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

Legende im Diagramm mit VBA bearbeiten

Forumthread: Legende im Diagramm mit VBA bearbeiten

Legende im Diagramm mit VBA bearbeiten
26.02.2018 07:28:27
Michaael
Hallo Zusammen,
ich verzweifele an folgender Aufgabenstellung:
In einem Diagramm habe ich sechs Datenreihen. Die Datenreihen können über ein Kontrollkästchen aktiviert oder deaktiviert werden (bei deaktivierten Kontrollkästchen werden alle Werte auf NV gesetzt und die Datenreihe dadurch nicht angezeigt!)
Wenn ich nun drei Datenreihen deaktiviere, so bleiben aber in der Legende diese Reihen erhalten.
Ist es über VBA möglich, die deaktivierten Datenreihen auch in der Legende zu entfernen?
Im Bereich A1:A6 sind die Ausgabewerte der Kontrollkästchen (Wahr oder Falsch) für die sechs Datenreihen.
Vielen Dank für Eure Unterstützung.
Michael
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Legende im Diagramm mit VBA bearbeiten
26.02.2018 07:30:27
Hajo_Zi
Hallo Michael,
ich bin nicht der Diagrammmensch aber:
nur wenige schauen auf Deinen Rechner und sehen die Datei.
Ich möchte gerne den Fehler im Original sehen.
Ich baue keine Datei nach. Die Zeit hat schon jemand investiert.
Ein Nachbau sieht meist anders aus als das Original. Darum sollte das Original verlinkt werden.
Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten anonymisieren bzw. pseudonymisieren.

Anzeige
AW: Demodatei eingestellt
26.02.2018 08:42:38
Rainer
Hallo Michael,
eine Möglichkeit wäre es die Datenreihen per VBA zu löschen und neu zu erstellen.
Dazu musst du aber das gesamte Diagramm neu erstellen und im Hintergrund den Macrorecorder aktivieren. Dann hat er alle Befehle bis auf "Delete". Den Code dann bitte hochladen zum Makro-Bau.
Einfacher ist es mit Office 2013, da kann man im Menu "Datenquelle auswählen" schon per Checkbox einzelne Graphen ausblenden, genauso wie du es die vorstellst. (Mein) Office 2010 hat diese Option leider nicht.
Gruß,
Rainer
Anzeige
Frage
26.02.2018 09:22:36
Michaael
Hallo Rainer,
ist es nicht möglich, die Elemente im Bereich Legende via Makro "anzusprechen"?
Gruß
Michael
AW: Frage
26.02.2018 10:11:17
Rainer
Hallo Michael,
ich habe zu kompliziert gedacht. Nimm Beverly's Lösung. Du hast sogar eine extra Tabelle nur für Diagramm angelegt, besser und einfacher wird es nicht.
Folgender Code in deinem Tabellenblatt:

Option Explicit
Private Sub CheckBox2016_Click()
Sheets("D6 Gaspreise Dia").Columns(12).Hidden = Not (CheckBox2016.Value)
End Sub
Private Sub CheckBox2017_Click()
Sheets("D6 Gaspreise Dia").Columns(13).Hidden = Not (CheckBox2017.Value)
End Sub
Private Sub CheckBox2018_Click()
Sheets("D6 Gaspreise Dia").Columns(14).Hidden = Not (CheckBox2018.Value)
End Sub
Private Sub CheckBox2019_Click()
Sheets("D6 Gaspreise Dia").Columns(15).Hidden = Not (CheckBox2019.Value)
End Sub
Private Sub CheckBox2020_Click()
Sheets("D6 Gaspreise Dia").Columns(16).Hidden = Not (CheckBox2020.Value)
End Sub
Private Sub CheckBox2021_Click()
Sheets("D6 Gaspreise Dia").Columns(17).Hidden = Not (CheckBox2021.Value)
End Sub
Private Sub CheckBox2022_Click()
Sheets("D6 Gaspreise Dia").Columns(18).Hidden = Not (CheckBox2022.Value)
End Sub
'alt
Private Sub Worksheet_Calculate()
With Tabelle11.ChartObjects(1).Chart.Axes(xlValue)
.MinimumScale = Range("rG1.Min")
.MaximumScale = Range("rG1.Max")
.ScaleType = xlLinear
.DisplayUnit = xlNone
End With
End Sub

Anzeige
kleines Folgeproblem
26.02.2018 10:23:07
Michael
Hallo Rainer,
vielen Dank für Deinen Code.
Funktioniert im Prinzip, so wie gewünscht.
Es gibt nur noch ein kleines Problem, welches ich nicht lösen kann:
Wenn man das Jahr 2016 deaktiviert, dann wird die Skalierung der horizontalen Achse "zerstört". Es werden dann Datumsangaben von 1900 angezeigt und übermäßig viele vertikale Hilfslinien eingeblendet.
Hast Du eine Idee, woran das liegen könnte?
Vielen Dank für Deine Unterstützung.
Gruß
Michael
Anzeige
Diagramm Datenreihen ein-/ausblenden
26.02.2018 10:24:00
Beverly
Hi Rainer,
du kannst ab Excel2013 zwar die von dir erwähnte Methode zum Ein-/Ausblenden einzelner Graphen anhand der CheckBoxen im Diagramm von Hand ausführeren, nicht jedoch per VBA.


AW: Diagramm Datenreihen ein-/ausblenden
26.02.2018 10:36:28
Rainer
Hallo Beverly,
ja, das Problem habe ich auch entdeckt.
Gruß,
Rainer
Anzeige
AW: Legende im Diagramm mit VBA bearbeiten
26.02.2018 08:45:57
Beverly
Hi Michael,
der einfachste Weg ist, wenn du die betreffenden Zeilen/Spalten im Tabellenblatt ausblendest.


Folgeproblem
26.02.2018 09:20:09
Michaael
Hallo Karin,
das Ausblenden der deaktivierten Spalten wäre eine Lösung, wenn nicht beim Ausblenden der Spalte L die Skalierung der horizontalen Achse kaputt geht. Es werden keine gültigen Datumsangaben mehr vorgenommen. Ich finde den Fehler nicht.
Vielen Dank und Gruß
Michael
Anzeige
AW: Folgeproblem
26.02.2018 10:14:25
Rainer
Hallo Michael,
dein Fehler ist, dass nur Datenreihe 1 eine X-Achse defniert hat!
=DATENREIHE('D6 Gaspreise Dia'!$L$11,'120060.xlsb'!rG1.Datum_dynamisch,'120060.xlsb'!rG1. _
Daten_2016,1)
=DATENREIHE('D6 Gaspreise Dia'!$Q$11,,'120060.xlsb'!rG1.Daten_2021,2)
Weise allen Datenreihen die gleiche X-Achse zu!
Gruß,
Rainer
Anzeige
PRIMA!
26.02.2018 10:24:30
Michael
Hallo Rainer,
das werde ich sofort ändern!
Vielen Dank auch un Gruß
Michael
;
Anzeige
Anzeige

Infobox / Tutorial

Legende im Diagramm mit VBA bearbeiten


Schritt-für-Schritt-Anleitung

Um die Legende in einem Excel-Diagramm mithilfe von VBA zu bearbeiten, folge diesen Schritten:

  1. Kontrollkästchen einfügen: Füge für jede Datenreihe ein Kontrollkästchen in dein Excel-Arbeitsblatt ein. Diese Kontrollkästchen steuern die Sichtbarkeit der Datenreihen im Diagramm.

  2. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Code einfügen: Füge den folgenden Code in das entsprechende Blattmodul ein, in dem sich deine CheckBoxen befinden:

    Option Explicit
    
    Private Sub CheckBox2016_Click()
        Sheets("D6 Gaspreise Dia").Columns(12).Hidden = Not (CheckBox2016.Value)
        UpdateLegend
    End Sub
    
    Private Sub CheckBox2017_Click()
        Sheets("D6 Gaspreise Dia").Columns(13).Hidden = Not (CheckBox2017.Value)
        UpdateLegend
    End Sub
    
    ' Weitere CheckBoxen hier hinzufügen...
    
    Private Sub UpdateLegend()
        Dim c As Chart
        Set c = Sheets("D6 Gaspreise Dia").ChartObjects(1).Chart
        Dim seriesIndex As Integer
    
        For seriesIndex = 1 To c.SeriesCollection.Count
            If c.SeriesCollection(seriesIndex).Values = "NV" Then
                c.SeriesCollection(seriesIndex).Delete
            End If
        Next seriesIndex
    End Sub
  4. Diagramm erstellen: Stelle sicher, dass dein Diagramm korrekt eingerichtet ist und die Datenreihen, die du ein- oder ausblenden möchtest, entsprechend referenziert werden.

  5. Testen: Klicke auf die Kontrollkästchen und beobachte, wie die Legende aktualisiert wird, um die ausgeblendeten Datenreihen zu entfernen.


Häufige Fehler und Lösungen

  • Fehler bei der Aktualisierung der Legende: Wenn die Legende nicht aktualisiert wird, stelle sicher, dass der Code zur Aktualisierung der Legende korrekt aufgerufen wird. Überprüfe die Namen der Datenreihen und deren Sichtbarkeit.

  • Datumsangaben werden falsch angezeigt: Wenn nach dem Deaktivieren einer Datenreihe unerwartete Datumsangaben erscheinen, stelle sicher, dass alle Datenreihen die gleiche X-Achse verwenden.


Alternative Methoden

Eine einfache Methode, um Datenreihen in einem Diagramm zu steuern, ist die Verwendung der Funktion "Datenquelle auswählen" in Excel 2013 oder neuer. Hier kannst du direkt im Menü die Datenreihen ein- oder ausblenden, ohne VBA zu verwenden. In älteren Versionen, wie Office 2010, ist dies jedoch nicht möglich.


Praktische Beispiele

Hier ist ein Beispiel für die Implementierung der Sichtbarkeitssteuerung von Datenreihen mit VBA:

Private Sub Worksheet_Calculate()
    With Tabelle11.ChartObjects(1).Chart.Axes(xlValue)
        .MinimumScale = Range("rG1.Min")
        .MaximumScale = Range("rG1.Max")
        .ScaleType = xlLinear
        .DisplayUnit = xlNone
    End With
End Sub

Durch die Verwendung dieser Subroutine sorgst du dafür, dass die Achsenwerte dynamisch angepasst werden, je nach den aktiven Datenreihen.


Tipps für Profis

  • Makrorecorder nutzen: Wenn du dir unsicher bist, welche VBA-Befehle benötigt werden, aktiviere den Makrorecorder und führe die gewünschten Aktionen im Excel-Diagramm aus. Der Recorder wird die notwendigen Befehle aufzeichnen und dir helfen, das richtige Skript zu erstellen.

  • Fehlerbehebung: Verwende Debug.Print im Code, um Variablenwerte während der Ausführung anzuzeigen. Dies hilft dir, Fehler im Code schneller zu finden.


FAQ: Häufige Fragen

1. Kann ich die Legende auch ohne VBA bearbeiten? Ja, in Excel 2013 und neuer kannst du die Sichtbarkeit von Datenreihen direkt über das Menü "Datenquelle auswählen" steuern.

2. Was mache ich, wenn das Diagramm nicht aktualisiert wird? Überprüfe den Code und stelle sicher, dass die Subroutine zur Aktualisierung der Legende richtig aufgerufen wird. Achte darauf, dass die Datenreihen korrekt referenziert sind.

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