Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1464to1468
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

Pivotcache Refresh

Pivotcache Refresh
15.12.2015 17:55:51
Daniel
Hallo
Ich habe ein Dropdown Menü über das ich mehre Pivotfilter setze. Er sucht vorher in den Daten nach "Div_Name" und wenn es diesen Namen gibt soll er die Pivot setzten, wenn nicht dann soll er "leer" auswählen in der Pivot.
Mein Problem ist das wenn es einen Wert in einer Pivot nicht gibt das er dann den Wert in den Cache übernimmt. Dies würde ich gerne wieder löschen indem ich den Cache refresche. Leider funktioniert das nicht.
Neben dem refresh habe ich auch das Problem das wenn ich "(leer)" nehme oder auch "(blank)" um das in der Privot zu setzen dann nimmt er nicht den normalen Filter sondern schreibt das in die Pivot.
'Pivot Space je division
If Target.Address = "$L$3" Then
If bool_pivotspacejedivision = False Then
Sheets("Pivot Space je Division").PivotTables("PivotTable1").PivotFields("Division 1"). _
CurrentPage = "(blank)"
Else
Sheets("Pivot Space je Division").PivotTables("PivotTable1").PivotFields("Division 1"). _
CurrentPage = Sheets("Scorecard").Range("L4").TEXT
End If
End If
'Pivot Space je Division
' temp = Sheets("Pivot Space je Division").PivotTables("PivotTable1").PivotFields.Item(" _
Division 1").PivotItems.Count
Dim pvtTable As Excel.PivotTable
Dim pvtField As Excel.PivotField
Dim pvtItem As Excel.PivotItem
' For i = 1 To Sheets("Pivot Space je Division").PivotTables("PivotTable1").PivotFields.Item(" _
Division 1").PivotItems.Count
Stop
Set pvtTable = Sheets("Pivot Space je Division").PivotTables("PivotTable1")
Set pvtField = Sheets("Pivot Space je Division").PivotTables("PivotTable1").PivotFields.Item(" _
Division 1")
For Each pvtItem In pvtField.PivotItems
temp = pvtItem
pvtItem.Delete
Next

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pivotcache Refresh
18.12.2015 08:21:29
fcs
Hallo Daniel,
Grundsätzlich kann es ein Problem sein Seitenfelder per Makro zu setzen, wenn es sich um Zahlenwerte oder Datumswerte handelt.
Im Extremfall musst du alle Pivots, die auf der gleichen Quelle basieren, löschen und neu aufbauen.
Aus den Feldern eines Pivotberichtes kannst du Kartei-Leichen (Items, die in der Quelle nicht mehr vorhanden sind) per Option entfern.
Userbild
Das Setzen der Werte eines Pivot-Filters im Seiten-Bereich kannst du per Makro wie folgt steuern.
Gruß
Franz
Private Sub Worksheet_Change(ByVal Target As Range)
Dim wksScore As Worksheet
Dim pvtTable As Excel.PivotTable
Dim pvtField As Excel.PivotField
Dim pvtItem As Excel.PivotItem
Dim temp, bool_pivotspacejedivision As Boolean
If Target.Address = "$L$3" Then
Set wksScore = Sheets("Scorecard")
Set pvtTable = Sheets("Pivot Space je Division").PivotTables(1)
'Pivottabelle aktualisieren
pvtTable.RefreshTable
'Pivot Space je division
Set pvtField = pvtTable.PivotFields.Item("Division 1")
'Prüfen, ob gewählte Division in Pivot-Items
bool_pivotspacejedivision = fncTestpvItem(pvtField, wksScore.Range("L4").Text)
'Filter in Pivot-Feld zurücksetzen
pvtField.ClearAllFilters
If bool_pivotspacejedivision = False Then
'falls Leer-Items vorhanden dann Filter setzen, ansonsten bleibt Filter auf alle
If fncTestpvItem(pvtField, strItemName:="(blank)") = True Then
pvtField.CurrentPage = "(blank)"
End If
Else
pvtField.CurrentPage = wksScore.Range("L4").Text
End If
End If
End Sub
Public Function fncTestpvItem(pvField As PivotField, strItemName As String) As Boolean
'Prüft ob das PivotItem zum Feld vorhanden ist
Dim pvItem As PivotItem
For Each pvItem In pvField.PivotItems
If strItemName = pvItem.Name Then
fncTestpvItem = True
Exit For
End If
Next
End Function

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige