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

VBA Pivot Slicer Berichtsverbindung

Forumthread: VBA Pivot Slicer Berichtsverbindung

VBA Pivot Slicer Berichtsverbindung
24.07.2018 14:01:52
Kurt
Hallo zusammen,
erst mal danke für die Aufnahme ins Forum, das mir bisher schon viel geholfen hat ;).
Leider bin ich grade auf ein Probelm gestoßen, bei dem ich nicht weiterkomme, trotz intensiven Suchens: Ich erstelle in VBA mehrere Pivot-Tabellen (alle aus dem selben Cache) auf verschiedenen sheets (Pivot_1, Pivot_2). Dort erstelle ich mir dann Pivot-Diagramme (PivotTable_1, ...), die ich dann in einem Dashboard zusammenkopiere. Das funktioniert soweit auch alles.
Als nächsten Schritt will ich einen Slicer einfügen, auch das geht noch, per:
- im Testmakro
ActiveWorkbook.SlicerCaches.Add2(ActiveChart.PivotLayout.PivotTable, "Year"). _
Slicers.Add ActiveSheet, , "Year", "Year", 189.5, 640, 144, 192.082913385827
- oder im großen Makro
Set SlicerCache = WB.SlicerCaches.Add2(PVT1, "Year")
SlicerCache.Name = "SlicerCacheYear"
Set Slc = SlicerCache.Slicers.Add(WS_Dash)
With Slc
.Caption = "Year"
.Name = "Slicer_Year"
End With
Bis dahin alles gut!
Jetzt möchte ich eine Berichtsverbindung erstellen, manuell geht das 1a, aber per VBA nicht. Ich habe sogar schon den Recorder mitlaufen lassen, der gibt aus:
- im Testmakro
ActiveSheet.Shapes.Range(Array("Year")).Select
ActiveWorkbook.SlicerCaches("Datenschnitt_Year").PivotTables.AddPivotTable ( _
ActiveSheet.PivotTables("PivotTable_2"))
- im großen Makro habe ich
ActiveSheet.SlicerCaches("SlicerCacheYear").PivotTables.AddPivotTable ( _
ActiveSheet.PivotTables("PivotTable_2"))
Der Fehler, der dann kommt heißt LFZ 1004 "Die PivotTables-Eigenschaft des Worksheet-Objektes kann nicht zugeordnet werden"
Soviel ich erkennen kann, findet er irgenetwas nicht, aber was? Ich habe verschiedenste Zeiger schon probiert, kann aber nicht sagen welche Adresse ihm nicht passt. Könnte mit jemand helfen? Danke schonmal!
VG
Kurt
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Pivot Slicer Berichtsverbindung
24.07.2018 14:59:03
Kurt
Gelöst!
Ich hatte es fast aufgegeben, die Lösung ist stumpf:
Anstatt
ActiveSheet.SlicerCaches("SlicerCacheYear").PivotTables.AddPivotTable ( _
ActiveSheet.PivotTables("PivotTable_2"))
einfach
ActiveSheet.SlicerCaches("SlicerCacheYear").PivotTables.AddPivotTable _
ActiveSheet.PivotTables("PivotTable_2")
Die Klammern sind das Problem! Da soll mal einer draufkommen....
Anzeige
;
Anzeige

Infobox / Tutorial

VBA Pivot Slicer Berichtsverbindung


Schritt-für-Schritt-Anleitung

  1. Pivot-Tabellen erstellen: Zuerst solltest Du sicherstellen, dass Du mehrere Pivot-Tabellen aus demselben Cache in verschiedenen Sheets erstellt hast. Zum Beispiel:

    Dim PVT1 As PivotTable
    Set PVT1 = ActiveSheet.PivotTables.Add(PivotCache, "PivotTable_1")
  2. Slicer hinzufügen: Um einen Slicer hinzuzufügen, benutze den folgenden Code:

    Dim SlicerCache As SlicerCache
    Set SlicerCache = ActiveWorkbook.SlicerCaches.Add2(PVT1, "Year")
    Dim Slc As Slicer
    Set Slc = SlicerCache.Slicers.Add(ActiveSheet, , "Year", "Year", 189.5, 640, 144, 192)
  3. Berichtsverbindungen erstellen: Um Berichtsverbindungen zu erstellen, stelle sicher, dass Du die Klammern korrekt verwendest. Der richtige Code sieht so aus:

    ActiveSheet.SlicerCaches("SlicerCacheYear").PivotTables.AddPivotTable _
    ActiveSheet.PivotTables("PivotTable_2")

Häufige Fehler und Lösungen

  • Fehler 1004: Wenn Du den Fehler "Die PivotTables-Eigenschaft des Worksheet-Objektes kann nicht zugeordnet werden" erhältst, liegt das häufig an einer falschen Verwendung der Klammern. Achte darauf, dass Du die Klammern wie im obigen Beispiel weglässt.

Alternative Methoden

Eine alternative Methode zur Erstellung der Berichtsverbindungen könnte die Verwendung von With-Anweisungen sein. Dies kann den Code klarer und leichter lesbar machen:

With ActiveSheet.SlicerCaches("SlicerCacheYear")
    .PivotTables.AddPivotTable ActiveSheet.PivotTables("PivotTable_2")
End With

Praktische Beispiele

Hier ein vollständiges Beispiel, das alle Schritte zusammenführt:

Sub CreatePivotAndSlicer()
    Dim PVT1 As PivotTable
    Dim SlicerCache As SlicerCache
    Dim Slc As Slicer

    ' PivotTable erstellen
    Set PVT1 = ActiveSheet.PivotTables.Add(PivotCache, "PivotTable_1")

    ' Slicer hinzufügen
    Set SlicerCache = ActiveWorkbook.SlicerCaches.Add2(PVT1, "Year")
    Set Slc = SlicerCache.Slicers.Add(ActiveSheet, , "Year", "Year", 189.5, 640, 144, 192)

    ' Berichtsverbindung erstellen
    ActiveSheet.SlicerCaches("SlicerCacheYear").PivotTables.AddPivotTable _
    ActiveSheet.PivotTables("PivotTable_2")
End Sub

Tipps für Profis

  • Verwendung von SlicerCaches: Achte darauf, dass Du ActiveWorkbook.SlicerCaches verwendest, um sicherzustellen, dass Du auf die richtigen Slicer zugreifst.
  • Fehlerbehebung: Wenn etwas nicht funktioniert, teste den Code Zeile für Zeile aus. Oft hilft es, den Code schrittweise auszuführen, um den Fehler zu identifizieren.

FAQ: Häufige Fragen

1. Wie füge ich mehrere Slicer hinzu?
Du kannst mehrere Slicer hinzufügen, indem Du für jeden Slicer einen neuen SlicerCache erstellst und die entsprechenden Parameter anpasst.

2. Warum funktioniert mein Slicer nicht?
Überprüfe, ob die Pivot-Tabellen richtig verknüpft sind und ob Du die richtige SlicerCache-Bezeichnung verwendest. Achte auch auf die Klammern im Code.

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