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

Wert eines Slicers in Zelle schreiben

Forumthread: Wert eines Slicers in Zelle schreiben

Wert eines Slicers in Zelle schreiben
01.04.2022 11:49:54
Filikos
Meine Pivottabelle hat verschiedene Datenschnitte. Einen bestimmten möchte ich nun ansprechen (siehe mein Code). Dieser enthält zwei Werte: WE und WT. Je nach Selektion soll der eine oder andere in eine bestimmte Zelle geschrieben werden. Sind beide selektiert, soll die betreffende Zelle leer sein. Bis jetzt habe ich folgenden Code:
'Slicer
Dim wks As Worksheet
Dim objSlicerItem As SlicerItem
Set wks = ActiveWorkbook.Worksheets("Hilfspivot")
With ActiveWorkbook.SlicerCaches("Datenschnitt_TagTyp").Slicers("TagTyp")
With objSlicerItem
' Wenn WE dann Wert in Zelle U7 schreiben, wks.Range ("U7").Value = Wert anzeigen
' Wenn WT, dann Wert in Zelle U7 schreiben, wks.Range ("U7").Value = Wert anzeigen
' in allen anderen Fällen die Zelle U7 leeren, wks.Range("U7").Value = clear.contens
End With
End With
Ich habe schon alles möglich probiert, um den Wert in die Zelle zu bekommen. Bin dankbar um eure Hilfe!
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wert eines Slicers in Zelle schreiben
01.04.2022 13:14:46
ChrisL
Hi

Sub Makro1()
Dim rngZiel As Range
Set rngZiel = Worksheets("Hilfspivot").Range("U7")
With ThisWorkbook.SlicerCaches("Datenschnitt_TagTyp")
If .SlicerItems("WE").Selected And Not .SlicerItems("WT").Selected Then
rngZiel = "WE"
ElseIf Not .SlicerItems("WE").Selected And .SlicerItems("WT").Selected Then
rngZiel = "WT"
Else
rngZiel = ""
End If
End With
End Sub
cu
Chris
Anzeige
AW: Wert eines Slicers in Zelle schreiben
01.04.2022 13:45:10
Filikos
Hallo Chris
Danke dir. Das Makro meldet jedoch bei dieser Befehlszeile jedoch einen Laufzeitfehler 1004 (Anwendungs- oder objektdefinierter Fehler):
If .SlicerItems("WE").Selected And Not .SlicerItems("WT").Selected Then
Was muss ich ändern?
Da dieser Teil nur ein Element des ganzen Makros ist, hier einmal das ganze Makro. Dies funktioniert einwandfrei - aber enthält eben noch nicht alle gewünschten Funktionalitäten. Ich möchte zum Schluss in meiner intelligenten Tabelle nämlich diejenigen Zeilen entfernen, welche denn Filtertext aufweisen.

Sub DatenUpdate()
'Slicerwert ermitteln
'Dim rngZiel As Range
'Set rngZiel = Worksheets("Hilfspivot").Range("U6")
'With ThisWorkbook.SlicerCaches("Datenschnitt_TagTyp")
'    If .SlicerItems("WE").Selected And Not .SlicerItems("WT").Selected Then
'        rngZiel = "WE"
'    ElseIf Not .SlicerItems("WE").Selected And .SlicerItems("WT").Selected Then
'        rngZiel = "WT"
'    Else
'        rngZiel = ""
'    End If
'End With
' Tabelle leeren - Titelzeile bleibt bestehen
Dim tbl As ListObject
Set tbl = Sheets("Hilfspivot").ListObjects("tb_source_full")
If tbl.ListRows.Count >= 1 Then
tbl.DataBodyRange.Delete
End If
'Startdatum und Enddatum
Dim datum As Date
Dim Start As Date
Dim Ende As Date
Dim newRow As ListRow
Start = Range("Datum_START")
Ende = Range("Datum_ENDE")
'Tabelle neu befüllen vom Start- bis Enddatum
For datum = Start To Ende
Set newRow = tbl.ListRows.Add
With newRow
.Range(1) = datum
.Range(2) = "=IF(ISBLANK([@Datum]),"""",IF(OR(WEEKDAY([@Datum],2)=6,WEEKDAY([@Datum],2)=7),""WE"",""WT""))"
.Range(3) = "=IF(ISBLANK([@Datum]),"""", IFERROR(VLOOKUP([@Datum],($P$14:$Q$9999) ,2,FALSE),0))"
.Range.Font.FontStyle = "Regular"
End With
Next datum
' Löschen
' Hier soll der Befehl folgen für das Löschen von Zeilen innerhalb der intelligenten Tabelle
'Datenwerte ausrichten
Range("tb_source_full[[TagTyp]]").HorizontalAlignment = xlCenter
Range("tb_source_full[[PT]]").HorizontalAlignment = xlRight
'Application.DisplayAlerts = True
End Sub

Anzeige
AW: Wert eines Slicers in Zelle schreiben
01.04.2022 13:54:00
ChrisL
Hi
Ich würde den Fehler so interpretieren, dass die Slicer-Items im Slicer-Catch nicht existieren.
cu
Chris
AW: Wert eines Slicers in Zelle schreiben
01.04.2022 14:40:15
Filikos
Ich habe einmal den Makro-Recorder laufen lassen und den betreffenden Datenschnitt angeklickt. Der Code zeigt
' ActiveWorkbook.SlicerCaches("Datenschnitt_TagTyp").VisibleSlicerItemsList = Array("[Kalender].[TagTyp].&[WT]")
' ActiveWorkbook.SlicerCaches("Datenschnitt_TagTyp").VisibleSlicerItemsList = Array("[Kalender].[TagTyp].&[WE]")
' ActiveWorkbook.SlicerCaches("Datenschnitt_TagTyp").ClearManualFilter
Also existieren die betreffenden Elemente. Die Pivot-Tabelle filtert auch sofort die Werte entsprechend.
Anzeige
AW: Wert eines Slicers in Zelle schreiben
01.04.2022 14:46:30
ChrisL
So sieht die Aufzeichnung bei mir aus. Womöglich habe ich eine andere Datei bzw. eine andere Ausgangslage...

Sub Makro1()
' Makro1 Makro
With ActiveWorkbook.SlicerCaches("Datenschnitt_TagTyp")
.SlicerItems("WE").Selected = True
.SlicerItems("WT").Selected = False
End With
With ActiveWorkbook.SlicerCaches("Datenschnitt_TagTyp")
.SlicerItems("WT").Selected = True
.SlicerItems("WE").Selected = False
End With
ActiveWorkbook.SlicerCaches("Datenschnitt_TagTyp").ClearManualFilter
End Sub

Anzeige
AW: Wert eines Slicers in Zelle schreiben
01.04.2022 16:26:05
Filikos
Ich habe die Lösung auf einem anderen Weg gefunden: ich habe mir nochmals eine Pivot-Tabelle mit nur dem Filterwert TagTyp erstellt. Als Ergebnis erhalte ich WE, WT oder All und kann damit für die Mittelwert-Berechnung arbeiten.
Nun hoffe ich, dass es mir noch gelingt die entsprechenden Zeilen in der benannten Tabelle gemäss Zellwert zu löschen ...
Danke dir vorerst für deine Hilfe!
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Wert eines Slicers in eine Zelle schreiben


Schritt-für-Schritt-Anleitung

Um den Wert eines Slicers in eine Zelle zu schreiben, kannst Du folgendes VBA-Makro verwenden. Achte darauf, dass Du die richtigen Namen für die Slicer und das Arbeitsblatt verwendest.

  1. Öffne die Excel-Datei mit der Pivot-Tabelle und dem Slicer.
  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject" -> "Einfügen" -> "Modul").
  4. Kopiere den folgenden Code in das Modul:
Sub Makro1()
    Dim rngZiel As Range
    Set rngZiel = Worksheets("Hilfspivot").Range("U7")

    With ThisWorkbook.SlicerCaches("Datenschnitt_TagTyp")
        If .SlicerItems("WE").Selected And Not .SlicerItems("WT").Selected Then
            rngZiel.Value = "WE"
        ElseIf Not .SlicerItems("WE").Selected And .SlicerItems("WT").Selected Then
            rngZiel.Value = "WT"
        Else
            rngZiel.Value = ""
        End If
    End With
End Sub
  1. Schließe den VBA-Editor und gehe zurück zu Excel.
  2. Führe das Makro aus, um den Wert des Slicers in die Zelle zu schreiben.

Häufige Fehler und Lösungen

  1. Laufzeitfehler 1004: Dieser Fehler tritt häufig auf, wenn die Slicer-Items im Slicer-Cache nicht existieren. Stelle sicher, dass die Slicer-Items korrekt benannt sind und im Slicer angezeigt werden.

  2. Zelle bleibt leer: Überprüfe, ob die Slicer-Items tatsächlich ausgewählt sind. Du kannst dies tun, indem Du die Auswahl im Slicer manuell überprüfst.

  3. Slicer nicht aktualisiert: Wenn die Pivot-Tabelle nicht aktualisiert wird, nachdem Du den Slicer geändert hast, stelle sicher, dass Du ActiveWorkbook.SlicerCaches("Datenschnitt_TagTyp").ClearManualFilter verwendest, um Filter zurückzusetzen.


Alternative Methoden

Wenn Du den Wert eines Slicers in eine Zelle schreiben möchtest, kannst Du auch die Funktion excel in zelle weiterschreiben nutzen. Hierbei wird der Slicer-Wert in eine Zelle geschrieben, ohne ein Makro zu verwenden. Diese Methode ist jedoch weniger flexibel.

  1. Füge den Slicer über Einfügen -> Slicer in Deine Pivot-Tabelle ein.
  2. Verwende die Formel =Slicer_YourSlicerName in der gewünschten Zelle, um den aktuellen Slicer-Wert anzuzeigen.

Praktische Beispiele

Hier ist ein einfaches Beispiel, wie Du den Slicer in eine Zelle schreiben kannst:

Wenn Du in Deiner Pivot-Tabelle einen Slicer für "TagTyp" mit den Werten "WE" und "WT" hast, kannst Du den oben genannten VBA-Code verwenden, um den aktuell ausgewählten Tagtyp in die Zelle U7 zu schreiben.

Wenn "WE" ausgewählt ist, wird U7 "WE" enthalten, und wenn "WT" ausgewählt ist, wird U7 "WT" enthalten. Bei keiner Auswahl bleibt die Zelle leer.


Tipps für Profis

  • Nutze den Slicer in Excel Shortcut (Alt + J + T + S), um schnell einen Slicer einzufügen.
  • Verwende die Slicercaches und SlicerItems vba effektiv, um die Interaktivität Deiner Pivot-Tabellen zu erhöhen.
  • Experimentiere mit der vba slicercaches-Funktion, um mehrere Slicer gleichzeitig zu steuern und die Benutzererfahrung zu verbessern.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Slicer gleichzeitig steuern?
Du kannst mehrere Slicers in einem einzigen Makro ansprechen, indem Du mehrere With-Anweisungen für die entsprechenden Slicer-Caches verwendest.

2. Was mache ich, wenn meine Slicer-Items nicht angezeigt werden?
Stelle sicher, dass die Datenquelle für die Pivot-Tabelle korrekt ist und dass die Slicers in Excel richtig eingestellt sind. Überprüfe auch die Filtereinstellungen der Pivot-Tabelle.

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