Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen

Diagramm Reihen und Rubriken über VBA ausblenden


Betrifft: Diagramm Reihen und Rubriken über VBA ausblenden von: maschbau0407
Geschrieben am: 11.07.2018 01:08:14

Hallo zusammen,

ich würde gerne in einem Diagramm über VBA die Reihen und Rubriken aktivieren und deaktivieren, wie dies über Excel über Daten auswählen und den Checkboxen möglich ist.

Welches Objekt ist dies?

Vielen Dank.

  

Betrifft: AW: Diagramm Reihen und Rubriken über VBA ausblenden von: ChrisL
Geschrieben am: 11.07.2018 08:29:16

Hi

Ich würde einfach die Zeilen oder Spalten in der Tabelle ein-/ausblenden.

Mag sein, dass man (ab Excel 2013?) die Datenreihen auch per VBA aktiveren/deaktivieren kann. Aber a) ist es komplizierter, b) ist die Datei nicht mit älteren Versionen kompatibel und c) kenne ich den Syntax nicht (du müsstest die Frage also wieder auf offen stellen).

cu
Chris


  

Betrifft: Im Diagramm direkt nicht möglich - o.w.T. von: Beverly
Geschrieben am: 11.07.2018 09:48:01


GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Im Diagramm direkt nicht möglich - o.w.T. von: ChrisL
Geschrieben am: 11.07.2018 10:43:01

Hi Beverly

Sag niemals nie :)

Vielleicht mache ich ein durcheinander, aber ich glaube da gäbe es theoretisch schon Möglichkeiten.
https://stackoverflow.com/questions/29703066/turning-the-visibility-of-chart-series-on-off-using-excel-macros-vba

ActiveChart.FullSeriesCollection(2).IsFiltered = True
oder
Private Sub Test()
    Dim cht As Chart
    Dim ser As Series

    'Retrieve our chart and seriescollection objects'
    Set cht = Worksheets("Sheet1").ChartObjects("Chart 1").Chart
    Set ser = cht.SeriesCollection(1)

    'Set the first series line to be hidden'

    With ser.Format.Line
        If .Visible = msoTrue Then
            .Visible = msoFalse
            ser.Name = vbNullString
        Else
            .Visible = msoTrue
            ser.Name = "Series 1"
        End If
    End With

End Sub
cu
Chris


  

Betrifft: Gut zu wissen... von: Beverly
Geschrieben am: 11.07.2018 11:02:48

Hi Chris,

...dass es über die Eigenschaft IsFiltert gesteuert werden kann, denn - entgegen dem Hinweis in dem Beitrag aus deinem Link - zeichnet der Makrorekorder das Ausblenden der Datenreihen bei mir in Excel2016 nicht auf (ist ja bekanntlich der erste Schritt, wenn man einen Befehl nicht kennt).

Dein 2. Code funktioniert nur wenn du ein Diagramm mit Linien vorliegen hast, nicht jedoch bei flächenhaften Datenreihen - da muss man mit Fill oder Interior.Color arbeiten.


GrußformelBeverly's Excel - Inn


  

Betrifft: passt... von: ChrisL
Geschrieben am: 11.07.2018 11:18:07

Hi Beverly

Alles klar, passt. Ich konnte mit XL 2016 übrigens ebenfalls nicht aufzeichnen.

cu
Chris


  

Betrifft: AW: passt... von: maschbau0407
Geschrieben am: 11.07.2018 23:11:38

Hallo,

danke für die vielen Hinweise.
Die Zeilen ausblenden ist interessant, in meinem Fall aber leider nicht anwendbar, da ich einzelne Zellen ausblenden müsste.

Die Option isFiltered ist super um die Datenreihen auszublenden.
Gibt es diese auch für die x-Achse bzw. wie spreche ich dies für die Rubrikenachse an.
Vielen DAnk.


  

Betrifft: AW: passt... von: ChrisL
Geschrieben am: 12.07.2018 08:58:44

Hi

Könnte ChartCategory sein...
https://msdn.microsoft.com/de-de/vba/excel-vba/articles/chartcategory-isfiltered-property-excel

cu
Chris


  

Betrifft: Wenn ich das richtig sehe... von: Beverly
Geschrieben am: 12.07.2018 11:38:23

Hi,

...bezieht sich ChartCategory auf Datenreihen: "Gibt TRUE zurück, wenn der Benutzer aus einer Reihe filtert."

Man kann damit zwar einzelne Werte ausblenden

Dim chr As Chart
Dim chrgrp As ChartGroup
Dim cat As CategoryCollection
Dim lngZaehler As Long
Set chr = ActiveSheet.ChartObjects(1).Chart
For Each chrgrp In chr.ChartGroups
    Set cat = chrgrp.CategoryCollection()
    For lngZaehler = cat.Count To 1 Step -1
        ' die ersten 2 Werte ausblenden
        If lngZaehler < 3 Then cat(lngZaehler).IsFiltered = True
    Next lngZaehler
Next chrgrp
aber man bekommt sie nicht wieder eingeblendet, da sie in der CategoryCollection nicht mehr existieren.
Vielleicht hat ja jemand noch eine Idee, deshalb lasse ich den Thread offen.


Was mir als Alternativ-Lösung noch einfällt wäre höchstens, die darzustellenden (sozusagen "gefilterten") Daten in ein Array einzulesen und diese dann den Datenreihen zuzuweisen oder die Daten in einen anderen Zellbereich zu kopieren und das Diagramm dann darauf aufzubauen. Noch einfacher wäre es natürlich, für das Diagramm generell einen anderen Zellbereich als Wertebasis zu verwenden und dann die Zeilen/Spalten auszublenden welche nicht dargestellt werden sollen.


Übrigens: auch in Excel2013 zeichnet der Makrorekorder die Aktion beim Ein-/Ausblenden nicht auf - weder für die Datenpunkte noch die Rubriken. Ich verstehe also nicht, wie in dem ersten Link geschrieben werden konnte, dass der Makrorekorder das aufzeichnet...


GrußformelBeverly's Excel - Inn


  

Betrifft: FullCategoryCollection von: ChrisL
Geschrieben am: 12.07.2018 17:07:18

Hi Karin

Mit FullCategoryCollection gehts...

https://www.mrexcel.com/forum/excel-questions/1017243-vba-manipulate-chart-filter.html

ActiveChart.ChartGroups(1).FullCategoryCollection(1).IsFiltered = False
cu
Chris


PS: Die Aussage mit dem Makrorekorder kam vermutlich ungetestet aus einem Reflex heraus. ;)


  

Betrifft: AW: FullCategoryCollection von: Beverly
Geschrieben am: 12.07.2018 18:02:57

Hi Chris,

ja, das ist die Lösung - klingt im Nachhinein auch logisch ;-)


GrußformelBeverly's Excel - Inn


Beiträge aus dem Excel-Forum zum Thema "Diagramm Reihen und Rubriken über VBA ausblenden"