Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Pivot Slicer steuern

Pivot Slicer steuern
08.02.2013 18:59:48
Gerd
Hallo,
ich habe Probleme mit den Slicern von Pivotttabellen. Ich möchte einfach nur ein Item selektieren. Eigentlich ganz einfach und geht blitzschnell an der Oberfläche.
Der aufgezeichnete Code sieht so aus:
With ActiveWorkbook.SlicerCaches("Datenschnitt_F1")
.SlicerItems("Au").Selected = True
.SlicerItems("CE").Selected = False
.SlicerItems("CIK").Selected = False
.SlicerItems("CK").Selected = False
.
.
.
.
.
.
.SlicerItems("ZKM").Selected = False
.SlicerItems("ZOBI").Selected = False
.SlicerItems("ZPRA").Selected = False
.SlicerItems("ZR").Selected = False
.SlicerItems("rad").Selected = False
.SlicerItems("(Leer)").Selected = False
End With
Er markiert also jedes andere Item als inaktiv. Falls man dann aber diese Code auführen lässt, dauert es ewig, da nach jedem "False" die Pivottabelle aktualisiert wird.
Ich suche verzweifelt nach einem Weg für "Deselect all" oder einem Weg die Liste ohne Neuberechnung zu durchlaufen.
Bin für alle Ideen dankbar,
Gerd
-

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pivot Slicer steuern
09.02.2013 20:23:23
fcs
Hallo Gerd,
ich hab keine Möglichkeit gefunden unter VBA die manuell per Mausklick mögliche Aktion (Datenschnitt-Filter-löschen dann ein Element selektieren) direkt nachzubauen.
Man kann das Makro aber beschleunigen, indem die Bildschirmaktualisierung zeitweise deaktiviert wird und das Makro sich nur um die aktuell sichtbaren Elemente kümmert.
Gruß
Franz
Sub SetSlicerItem_Au()
Call SlicerItemSetzen(objSlicerCache:=ActiveWorkbook.SlicerCaches("Datenschnitt_F1"), _
strNameItem:="Au")
End Sub
Public Sub SlicerItemSetzen(objSlicerCache As SlicerCache, ByVal strNameItem As String)
' Datenschnitt - SlicerItem Setzen
Dim objSlicerItem As SlicerItem
Application.ScreenUpdating = False
With objSlicerCache
If .SlicerItems(strNameItem).Selected = False Then
.SlicerItems(strNameItem).Selected = True
End If
For Each objSlicerItem In .VisibleSlicerItems
With objSlicerItem
If .Name  strNameItem Then
If .Selected = True Then .Selected = False
End If
End With
Next
End With
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Pivot Slicer steuern
10.02.2013 11:08:41
Gerd
Hallo Franz,
viele Dank für Deinen Vorschlag, ich werde ihn noch ausprobieren (momentan hänge ich nicht an der Datenbank aus der die Pivot die Daten zieht).
Ich hatte es schon mal probiert mit dem ausschalten des ScreenUpdatings, aber da den Eindruck es bewirkt nichts. Ich teste es aber noch mal mit deinem Code, vielleicht hatte ich einen Fehler drin.
viele Grüße,
Gerd

Anzeige
AW: Pivot Slicer steuern
10.02.2013 15:41:52
fcs
Hallo Gerd,
wenn der Pivotbericht sich die Daten aus einer externen Datenbank holt, dann kann natürlich je nach Größe der Datenbank die Aktualisierung relativ lange dauern - unabhängig davon dass die Bildschirmaktualisierung deaktiviert wird. Denn jede Änderung der Datenschnitteinstellung wird eine neue Datenbankabfrage auslösen.
Gruß
Franz

Anzeige
AW: Pivot Slicer steuern
10.02.2013 20:13:16
Gerd
Hallo Franz,
ich habe noch mal überlegt und glaube es liegt doch nicht an der Datenbank. Die Daten wurden ja schon aus der Datenbank in den PivottableCache geladen. Daher refresht Excel einfach nur immer aus dem Cache (die Pivottabelle ist auf "Daten in Pivot speichern" gestellt) und es sollte egal sein, ob die Daten aus einem Excel Blatt oder einer Datenbank gekommen waren.
viele Grüße,
Gerd

Anzeige
AW: Pivot Slicer steuern
11.02.2013 16:12:14
Gerd
Hallo Franz,
ich habe jetzt die pragmatischste Lösung gewählt :) - der Anwender muss erst selber das erste Element aktivieren und darf dann erst das Makro starten.
viele Grüße,
Gerd
;
Anzeige
Anzeige

Infobox / Tutorial

Pivot Slicer steuern: Tipps und Tricks für Excel


Schritt-für-Schritt-Anleitung

Um einen Pivot Slicer in Excel zu steuern, kannst Du die folgenden Schritte befolgen:

  1. Öffne den Visual Basic for Applications (VBA)-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle ein neues Modul:

    • Gehe zu Einfügen > Modul.
  3. Füge den folgenden Code ein, um ein spezifisches Slicer-Item auszuwählen:

    Sub SetSlicerItem_Au()
       Call SlicerItemSetzen(objSlicerCache:=ActiveWorkbook.SlicerCaches("Datenschnitt_F1"), _
       strNameItem:="Au")
    End Sub
    
    Public Sub SlicerItemSetzen(objSlicerCache As SlicerCache, ByVal strNameItem As String)
       Dim objSlicerItem As SlicerItem
       Application.ScreenUpdating = False
       With objSlicerCache
           If .SlicerItems(strNameItem).Selected = False Then
               .SlicerItems(strNameItem).Selected = True
           End If
           For Each objSlicerItem In .VisibleSlicerItems
               With objSlicerItem
                   If .Name <> strNameItem Then
                       If .Selected = True Then .Selected = False
                   End If
               End With
           Next
       End With
       Application.ScreenUpdating = True
    End Sub
  4. Führe das Makro aus, um das gewünschte Slicer-Item auszuwählen und alle anderen zu deaktivieren.


Häufige Fehler und Lösungen

  • Fehler: Langsame Ausführung des Codes

    • Lösung: Stelle sicher, dass Application.ScreenUpdating auf False gesetzt ist, um die Bildschirmaktualisierung während der Ausführung des Makros zu deaktivieren.
  • Fehler: Der Slicer aktualisiert sich ständig

    • Lösung: Wenn Du die Excel Datenschnitt mehrfachauswahl deaktivieren möchtest, musst Du sicherstellen, dass der Slicer so konfiguriert ist, dass er nur ein Element gleichzeitig auswählen kann.

Alternative Methoden

Eine alternative Methode, um Slicer-Items in Excel zu steuern, ist die Verwendung von Formeln oder die manuelle Auswahl von Items über die Benutzeroberfläche. Du kannst auch VBA verwenden, um mehrere Slicer gleichzeitig zu steuern, indem Du die slicercaches vba nutzt.


Praktische Beispiele

Hier sind einige praktische Beispiele zur Verwendung von Pivot Slicern in Excel:

  1. Ein Slicer für mehrere Pivot-Tabellen: Du kannst denselben Slicer für mehrere Pivot-Tabellen verwenden, indem Du sicherstellst, dass sie auf denselben Slicer-Cache zugreifen.

  2. Dynamische Slicer-Steuerung: Verwende VBA, um Slicer basierend auf Benutzerinteraktionen dynamisch zu steuern. Beispielsweise kannst Du einen Button erstellen, der bei Klick einen bestimmten Slicer auswählt.


Tipps für Profis

  • Vermeide unnötige Neuberechnungen: Deaktiviere die Bildschirmaktualisierung und die Neuberechnung, während Du mit Slicern arbeitest, um die Leistung zu verbessern.

  • Nutze die sliceritems vba: Mit sliceritems kannst Du gezielt auf einzelne Items eines Slicers zugreifen und deren Status überprüfen oder ändern.

  • Erstelle benutzerdefinierte Slicer: Du kannst Slices in Excel anpassen, um die Benutzererfahrung zu verbessern und die Datenvisualisierung zu optimieren.


FAQ: Häufige Fragen

1. Wie kann ich alle Slicer-Items gleichzeitig deaktivieren? Du kannst eine Schleife in VBA verwenden, um durch alle SlicerItems zu iterieren und sie auf False zu setzen.

2. Warum dauert die Ausführung meines VBA-Codes für Slicer so lange? Die Ausführung kann lange dauern, wenn die Datenquelle groß ist oder wenn die Bildschirmaktualisierung nicht deaktiviert ist. Stelle sicher, dass Du Application.ScreenUpdating = False verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige