Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1964to1968
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Datenschnitt mit dem Inhalt einer Zelle auswählen

Datenschnitt mit dem Inhalt einer Zelle auswählen
23.02.2024 11:18:23
mccormickd324
Hallo,

ich benötige wieder einmal Eure Hilfe in der Besipieldatei

https://www.herber.de/bbs/user/167264.xlsx

habe ich im Blatt "Tabelle3" eine Pivot mit einem Datenschnitt "Monat2"

in der Mappe Tabelle2 inder Zelle "A1" steht der Wert "Juni" (dieser ist variabel)"

ich hätte gerne über VBA , wenn der Wert in der Zelle "a1" sich ändert soll der Datenschnitt "Monat2" auf den Inhalt der Zelle "a1" gefiltert werden

in der Zelle A1 kommt nur Januar bis Dezember vor, aber variabel

Hätte da jemand eine Idee ?

Gruesse Gerhard



3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datenschnitt mit dem Inhalt einer Zelle auswählen
23.02.2024 14:46:43
Yal
Hallo Gerhard,

starte den Makrorekorder und setzt ein Monat auf dem Slicer. Der Code sieht so aus (von mir leicht nachgearbeitet):
Sub Makro1()

ActiveWorkbook.SlicerCaches("Datenschnitt_Monat2").VisibleSlicerItemsList = Array("[Tabelle1].[Monat2].&[Juni]")
End Sub


Nun brauchst Du in Tabelle2 ein Ereignis-Prozedure, die die Änderung in A1 wahrnimmt
_ auf dem Reiter von "Tabelle2" rechtsklicken
_ "Code anzeigen" anklicken
_ im VB-Editor auf dem Dropdown über den Codefenster links, da wo "(Allgemein)" steht, "Worksheet" auswählen,
_ auf dem Dropdown rechts, wo jetzt "SelectionChange" steht, "Change" aussuchen,
_ im Code unten den "Worksheet_SelectionChange" wieder löschen (von "Private Sub" bis "End Sub")
_ "Worksheet_Change" jetzt so ergänzen:

Private Sub Worksheet_Change(ByVal Target As Range)

On Error Resume Next
If Target.Address = "$A$1" Then
ThisWorkbook.SlicerCaches("Datenschnitt_Monat2").VisibleSlicerItemsList = Array("[Tabelle1].[Monat2].&[" & Target.Value & "]")
End If
End Sub

Achte darauf, dass der übergegebene Wert case sensitiv ist. "Mai" geht, "mai" geht nicht. Idealerweise setzst Du auf diese Zelle A1 einen Datenüberprüfung (Menü "Daten", "Datenüberprüfung", "Liste" in der Liste
Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;Dezember
reinbringen.

VG
Yal

Anzeige
AW: Datenschnitt mit dem Inhalt einer Zelle auswählen
23.02.2024 16:18:03
mccormickd324
Vielen Vielen Dank,

genau das hatte ich gesucht (vorausgegangen ist ein Modul, das aus einer Pivot aus allen Datenschnitten die Auswahl in einer Mappe in Zellen schreibt)

falls das jemand sucht

und Dein Code komplementiert jetzt meine Datei

Gruesse Gerhard

'################### Anfang
Private Sub Workbook_SheetPivotTableUpdate(ByVal Sh As Object, ByVal Target As PivotTable)

Dim sUeberschrift As String
Dim x As Object, y As Object

For Each x In ActiveWorkbook.SlicerCaches


For Each y In x.SlicerItems


If y.Selected = True Then
zaehler = zaehler + 1
If zaehler = 1 Then
sUeberschrift1 = y.Name
End If
If zaehler = 2 Then
sUeberschrift2 = y.Name
End If
If zaehler = 3 Then
sUeberschrift3 = y.Name
End If
If zaehler = 4 Then
sUeberschrift4 = y.Name
End If
If zaehler = 5 Then
sUeberschrift5 = y.Name
End If

Exit For


End If
Next

Next

Worksheets("Markt_Geb_Region").Range("b1") = sUeberschrift1
Worksheets("Markt_Geb_Region").Range("b2") = sUeberschrift2
Worksheets("Markt_Geb_Region").Range("b3") = sUeberschrift3
Worksheets("Markt_Geb_Region").Range("b4") = sUeberschrift4
Worksheets("Markt_Geb_Region").Range("b5") = sUeberschrift5

'Worksheets("Dashboard").Range("G2").ShrinkToFit = True
End Sub
'########### Ende

Anzeige
Vielen Dank für die Rückmeldung
23.02.2024 16:37:22
Yal
Hallo Gerhard,

ein Vorschlag für dein Code

(Verwende die Schaltfläche "Code <pre><code>" um den Code zu posten)
Private Sub Workbook_SheetPivotTableUpdate(ByVal Sh As Object, ByVal Target As PivotTable)

Dim sUeberschrift(1 To 5) As String
Dim x As Object
Dim y As Object
Dim i As Integer

For Each x In ActiveWorkbook.SlicerCaches
For Each y In x.SlicerItems
If y.Selected = True Then
i = i + 1
If i >= 1 And i = 5 Then sUeberschrift(i) = y.Name
Exit For
End If
Next
Next
For i = 1 To 5
Worksheets("Markt_Geb_Region").Cells(i, "B").Value = sUeberschrift(i)
Next
'Worksheets("Dashboard").Range("G2").ShrinkToFit = True
End Sub


VG
Yal
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige