VBA Slicer Inhalt in Zelle auslesen
Schritt-für-Schritt-Anleitung
Um den Inhalt eines Excel Slicers in eine Zelle zu schreiben, kannst du folgenden VBA-Code verwenden. Dieser Code wird ausgeführt, wenn eine PivotTable aktualisiert wird:
-
Öffne den VBA-Editor mit Alt + F11
.
-
Wähle im Projektfenster das Arbeitsblatt aus, das den Slicer enthält.
-
Füge den folgenden Code in das Modul „DieseArbeitsmappe“ ein:
Private Sub Workbook_SheetPivotTableUpdate(ByVal Sh As Object, ByVal Target As PivotTable)
If Sh.Name = "Liste" Then
Dim si As SlicerItem
Dim ar() As Variant
ReDim ar(0) As Variant
With ActiveWorkbook.SlicerCaches("Datenschnitt_KW")
For Each si In .SlicerItems
If si.Selected = True Then
ReDim Preserve ar(UBound(ar) + 1) As Variant
ar(UBound(ar)) = si.Name
End If
Next si
End With
Worksheets("Liste").Cells(20, 12) = Mid(Join(ar, ";"), 2, 999)
End If
End Sub
-
Schließe den VBA-Editor und teste die Funktionalität, indem du den Slicer verwendest. Der Wert sollte in Zelle L20 des Blattes „Liste“ erscheinen.
Häufige Fehler und Lösungen
-
Fehlende Werte: Wenn du keine Werte in der Zelle siehst, stelle sicher, dass der Name des Slicers ("Datenschnitt_KW") korrekt geschrieben ist und genau mit dem in Excel übereinstimmt.
-
Kein Trigger: Vergewissere dich, dass die PivotTable auf dem Blatt aktualisiert wird, wenn du den Slicer änderst. Der Code wird nur aktiviert, wenn eine PivotTable aktualisiert wird.
-
Slicer nicht aktiv: Prüfe, ob der Slicer auf dem richtigen Blatt ist und ob er tatsächlich mit der PivotTable verbunden ist.
Alternative Methoden
Wenn du keine VBA-Programmierung verwenden möchtest, kannst du auch die Funktion =GETPIVOTDATA()
verwenden, um Daten direkt aus einer PivotTable abzurufen. Diese Methode ist jedoch weniger flexibel und nicht direkt für Slicer geeignet.
Praktische Beispiele
Angenommen, du hast einen Slicer für die Kalenderwochen, der auf die PivotTable im Blatt „Pivot Board“ zugreift. Der folgende Code zeigt, wie du den ausgewählten Wert in Zelle L20 des Blattes „Liste“ speichern kannst.
Private Sub Workbook_SheetPivotTableUpdate(ByVal Sh As Object, ByVal Target As PivotTable)
If Sh.Name = "Liste" Then
Dim si As SlicerItem
Dim ar() As Variant
ReDim ar(0) As Variant
With ActiveWorkbook.SlicerCaches("Datenschnitt_KW")
For Each si In .SlicerItems
If si.Selected = True Then
ReDim Preserve ar(UBound(ar) + 1) As Variant
ar(UBound(ar)) = si.Name
End If
Next si
End With
Worksheets("Liste").Cells(20, 12) = Mid(Join(ar, ";"), 2, 999)
End If
End Sub
Dieser Code wird automatisch ausgeführt, wenn du einen Slicer auswählst, wodurch der Wert in die Zelle geschrieben wird.
Tipps für Profis
-
Verwende die SlicerCaches
-Auflistung, um mehr über die Slicer in deiner Arbeitsmappe zu erfahren. Dadurch kannst du effizientere und flexiblere VBA-Skripte erstellen.
-
Nutze den slicer in excel shortcut
, um schnell zwischen verschiedenen Slicern zu wechseln, was die Arbeit mit großen Datensätzen erheblich erleichtert.
FAQ: Häufige Fragen
1. Wie kann ich den Slicer-Wert automatisch aktualisieren?
Durch den oben genannten VBA-Code wird der Slicer-Wert automatisch aktualisiert, wenn du eine Änderung in der PivotTable vornimmst.
2. Was tun, wenn der Slicer nicht angezeigt wird?
Stelle sicher, dass der Slicer korrekt mit der PivotTable verbunden ist und dass du das richtige Arbeitsblatt ausgewählt hast.
3. Kann ich mehrere Slicer-Werte in einer Zelle anzeigen lassen?
Ja, der Code oben zeigt alle ausgewählten Slicer-Werte in einer Zelle an, getrennt durch ein Semikolon.