Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1904to1908
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

Drucken aus Pivot

Drucken aus Pivot
09.11.2022 11:42:38
Frank
Hallo,
ich habe ein Problem beim ausdrucken ein Pivottabelle mit einer vorher getroffen Auswahl aus einer Listbox.
Userbild
Das Probelm ist nun das wenn ich eine Kostenstelle(KST) aus der Listbox auswähle und auf Drucken gehe, werden keine Daten für diese KST angezeigt. Nehme ich die gleiche KST und wiederhole diesen Vorgang 3x werden beim 3. mal die Daten ausgegeben. Setzt man in der Zeile

ActiveSheet.PivotTables("PivotTable1").PivotFields("[Kostenstellen].[Nr_und_Bez].[Nr_und_Bez]").VisibleItemsList = Array( _
"[Kostenstellen].[Nr_und_Bez].&[" & Kstauswahl & "]")
ein Haltepunkt werden die Daten beim ersten Ausführen, in Abhängigkeit von der Geschwindigkeit des betätigens von F8 angezeigt oder nicht. Drückt man z.Bsp F8 im Sekundentakt -> Daten werden ausgegeben. Dückt man F8 so schnell es geht -> keine Daten. Beim drücken von F8 mit einer Pause dazwischen, sieht man das die Daten verzögert in der Pivottabelle ausgegeben werden. Dieseverzögerung ist nicht mehr zusehen wenn der Vorgang3x wiederholt wurde.
Hat jemand für dieses Problem ein Lösung ?
Pivottabelle nach dem 1. ausführen
Userbild
Pivottabelle nach dem 3. ausführen
Userbild
Der Code für das ausdrucken sieht so aus. Die auskommentierten Zeile sind meine Versuche das Problem zu lösen.

Private Declare PtrSafe Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Private Sub CommandButton2_Click()    ' DRUCKEN
' Drucken der Efue Bauleistung
Dim Kstauswahl As String
Dim i, z As Integer, t As Integer
t = 8
myTimer = Timer()
' Unload Me
ActiveSheet.PivotTables("PivotTable1").PivotFields("[Kostenstellen].[Nr_und_Bez].[Nr_und_Bez]").ClearAllFilters
Application.Dialogs(xlDialogPrinterSetup).Show    'Druckerauswahl aufrufen
For i = 0 To ListBox2.ListCount - 1                  'Für jede Zeile der Listbox2
' Worksheets("gewählte-KST").Cells(t, 6).Value = ListBox2.List(i)  'Eintrag aus Listbox2 in Tabelle1-SpalteC- unten dranhängen
' Application.ScreenUpdating = False
Kstauswahl = ListBox2.List(i)
ActiveSheet.PivotTables("PivotTable1").PivotFields("[Kostenstellen].[Nr_und_Bez].[Nr_und_Bez]").VisibleItemsList = Array( _
"[Kostenstellen].[Nr_und_Bez].&[" & Kstauswahl & "]")
' Application.Wait (Now + TimeValue("0:00:01")) ' Pause eingefügt, da die Daten nicht schnell genug geliefert wurden. Es kamen spord. Blätter mit 0 raus
' ActiveSheet.Calculate
' Application.Wait (4000)  ' Pause eingefügt, da die Daten nicht schnell genug geliefert wurden. Es kamen spord. Blätter mit 0 raus
' Application.Dialogs(xlDialogPrint).Show    'Druckerauswahl aufrufen
Do
DoEvents
Loop Until Timer > (myTimer + 2) ' warte 2 Sekunden
' Sleep 1500
' Application.Wait (Now + TimeValue("0:00:01")) ' Pause eingefügt, da die Daten nicht schnell genug geliefert wurden. Es kamen spord. Blätter mit 0 raus
' ActiveSheet.PivotTables("PivotTable1").PivotCache.BackgroundQuery = False
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
t = t + 1
Next i
Do While Worksheets("gewählte-KST").Cells(t + 1, 6)  ""
Worksheets("gewählte-KST").Cells(t + 1, 6).Value = ""
Loop
' Application.ScreenUpdating = True
ActiveSheet.PivotTables("PivotTable1").PivotFields("[Kostenstellen].[Nr_und_Bez].[Nr_und_Bez]").ClearAllFilters
Unload Me
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: Drucken aus Pivot
09.11.2022 13:50:22
Yal
Hallo Frank,
vielleicht kannst Du den Ereignis "PivotTableUpdate" abfangen:

Dim PT_Updated As Boolean
Const cPTName = "PivotTable1"
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
If Target.Name = cPTName Then PT_Updated = True
End Sub
Sub PT_aktualisieren()
Dim i As Long
PT_Updated = False
With ActiveSheet.PivotTables(cPTName)
Kstauswahl = ListBox2.List(i)
.PivotFields("[Kostenstellen].[Nr_und_Bez].[Nr_und_Bez]").VisibleItemsList _
= Array("[Kostenstellen].[Nr_und_Bez].&[" & Kstauswahl & "]")
Do
DoEvents
i = i + 1 'Fallschirm-Klausel. Vermeidet endlose Schleife
Loop While (PT_Updated = False And i 
Ansonsten würde ich den Timer unmittelbar vor dem Do initialisieren. Wenn schon vorher 2 Sek abgelaufen sind, ist diese Schleife nutzlos.
VG
Yal
Anzeige
AW: Drucken aus Pivot
14.11.2022 15:07:39
Frank
Hallo YAL,
ich bin leider erst heute dazugekommen mir deine Vorschlag anzusehen. Ganz verstanden habe ich deine Codeschnipsel nicht
Im Prinzip mach er ja nichts andere als ich mit diesem Code. Ich hatte hier auch schon mal 30 Sekunden eingetragen. Die Ausführung wird dann auch um diese 30 Sekunden verzögert.

Do
DoEvents
Loop Until Timer > (myTimer + 2) ' warte 2 Sekunden
Das Problem ist ja das die Pivottabelle nicht aktualisiert wird und Pivottableupdate immer false ist bis zum 3. Durchlauf.

ActiveSheet.PivotTables("PivotTable1").PivotFields("[Kostenstellen].[Nr_und_Bez].[Nr_und_Bez]").VisibleItemsList = Array( _
"[Kostenstellen].[Nr_und_Bez].&[" & Kstauswahl & "]")
Gibt es hier ein Möglichkeit das aktualisieren der Pivottabelle zu erzwingen.
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False

Anzeige
AW: Drucken aus Pivot
16.11.2022 09:47:10
Frank
ich hatte vergessen den Hacken bei Frage noch offen zu setzen

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige