Clever-Excel-Forum

Normale Version: Pivottabellen - Pivottabelle mit Qubewert berechnen-aktualisieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich hab ein Problem, wenn ich über VBA eine Pivottabelle mit Cubewerten aktualaisieren lassen wird diese nicht durchgeführt. Ohne VBA wird die Berechnung und Aktualisierung durchgeführt.
Die Berechnung und Aktualisierung klappt auch wenn ich ein Haltepunkt setze.
z.Bsp in der Zeile Next i

Wenn mann das 
Code:
ActiveSheet.PivotTables("PivotTable1").PivotFields("[Kostenstellen].[Nr_und_Bez].[Nr_und_Bez]").ClearAllFilters
entfernt und die Seitenvorschau beendet. Dann werden die Daten korrekt in der Pivottabelle angezeigt. Bevor die Daten angezeigt werden, ist ein sichbare Verzögerung zusehen (< 1 Sekunde). Nimmt man jetzt den ClearAllFilters wieder rein und nimmt bei der Auswahl immer die selbe Kostenstelle, dann werden die gefilterten Daten beim 3. Durchlauf in der Pivottabelle korrekt angezeigt.
Ablauf:
Druckauswahl -> auswahl Kostenstelle -> Seitenvorschau (keine Daten) -> Seitevorschau beenden
Druckauswahl -> auswahl Kostenstelle -> Seitenvorschau (keine Daten) -> Seitevorschau beenden
Druckauswahl -> auswahl Kostenstelle -> Seitenvorschau (jetzt mit Daten) -> Seitevorschau beenden

Code:
Private Sub CommandButton3_Click() 'Seitenvorschau
    Dim Kstauswahl As String
    Dim i As Integer, t As Integer
 
    '    t = 8
    Unload Me
    ActiveSheet.PivotTables("PivotTable1").PivotFields("[Kostenstellen].[Nr_und_Bez].[Nr_und_Bez]").ClearAllFilters
   
    For i = 0 To ListBox2.ListCount - 1                  'Für jede Zeile der Listbox2
        '            Tabelle2.Cells(t, 1).Value = ListBox2.List(i)  'Eintrag aus Listbox2 in Tabelle1-SpalteC- unten dranhängen
        '             Application.ScreenUpdating = True
        Kstauswahl = ListBox2.List(i)
        ActiveSheet.PivotTables("PivotTable1").PivotFields("[Kostenstellen].[Nr_und_Bez].[Nr_und_Bez]").VisibleItemsList = Array("[Kostenstellen].[Nr_und_Bez].&[" & Kstauswahl & "]")
        'Seitenansicht aufrufen
        '            t = t + 1
    Next i
   
'        Sleep (500)        Pause Variante1
 
   
'        Do                 Pause Variante2
'        DoEvents
'        Call Sleep(1000)
'    Loop Until Application.CalculationState = xlDown
   
   
   
'    Application.Wait (Now + TimeValue("00:00:02"))   Pause Variante3
   
    Application.Dialogs(xlDialogPrintPreview).Show
'    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="d:kostenstelle.pdf", Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=True
    '  Do While Worksheets(2).Cells(t + 1, 1) <> ""
    '      Tabelle2.Cells(t + 1, 1).Value = ""
    '  Loop
    '   Application.ScreenUpdating = True
    '   ActiveSheet.PivotTables("PivotTable1").PivotFields("[Kostenstellen].[Nr_und_Bez].[Nr_und_Bez]").ClearAllFilters
   
   
   
    Unload Me
   
End Sub




In den auskommentierten Zeile sind meine Varinten zu sehen um dem Code mehr Zeit für die Aktualisierung zu geben, leider ohne erfolg.

Hat jemand noch ein Idee wie ich dem Code beibringen kann, das die Daten in der Pivottabelle aktualisiert werden vor dem:
Application.Dialogs(xlDialogPrintPreview).Show
Hallöchen,


schaue Dir mal diesen Thread bei Stackoverflow an. Dort sind eine Menge Vorschläge aufgeführt, von denen Dir vielleicht einer hilft.
Hallo Schauan,

ich habe mal zu deinem Link ein paar Varianten probiert. Entweder es gibt Fehlermeldungen oder es bleibt baim alten.
Nur wenn ich die 3 Durchläufe mache funktionierte es

Druckauswahl -> auswahl Kostenstelle -> Seitenvorschau (keine Daten) -> Seitevorschau beenden
Druckauswahl -> auswahl Kostenstelle -> Seitenvorschau (keine Daten) -> Seitevorschau beenden
Druckauswahl -> auswahl Kostenstelle -> Seitenvorschau (jetzt mit Daten) -> Seitevorschau beenden

Oder, im Debugmodus wird die Pivottabelle gefilterert und die Daten werden korrekt aktualisiert, wenn an diesem Punkt eine Haltepunkt gesetzt wird und man im Einzelschrittmodus weiter macht.
Code:
Application.Dialogs(xlDialogPrintPreview).Show
Hallo,

hat keiner irgendeine Idee wie mann das Problem lösen kann. Ich währe für jeden Tipp dankbar.