AW: Schleifen Problem
13.07.2011 12:56:35
fcs
Hallo Jonas,
damit das funktioniert, muss du einiges umbauen.
1. Schleifen-Struktur
Bevor das nächste Pivotitem abgefragt wird muss PDF-gedruckt werden.
Der Schleifenzähler muss über die mit OnTime aufgerufene Prozedur hochgezählt werden.
2. Die Art wie die angezeigten Items ermittelt werden
Hier muss man in der Schleife nacheinander die Zellen des Datenbereichs des Pivotfeldes abarbeiten.
Der Datenbereich des Pivotfeldes enthält die angezeigten Pivotitems.
Außerdem hast du ein paar besonderheiten Gemacht, die ich so nicht machen würde. Siehe Anmerkungen im Code.
Nachfolgend mein Vorschlag zur Anpassung, aber nur in Grenzen getestet. In Excel darf während der Makroausführung nichts gemacht werden.
Gruß
Franz
'Code in einem allgemeinen Modul
Option Explicit
Public Name, dTimeStart As Date
'Name ist kein guter Variablenname, da eine in VBA benutzte Eigenschaft
Public pvTab As PivotTable, pvField As PivotField, wks As Worksheet, i As Integer
Sub Auswerten_1_6_Start()
Set wks = ActiveSheet
Set pvTab = wks.PivotTables("PivotTable1")
Set pvField = pvTab.PivotFields("HNr")
i = 0
Call Auswertungen_1_6
End Sub
Sub Auswerten_1_6_Stop()
On Error Resume Next
Application.OnTime dTimeStart, "Erstellen_pdf", Schedule:=False
Set wks = Nothing
Set pvTab = Nothing
Set pvField = Nothing
Application.StatusBar = False
MsgBox "Fertig"
End Sub
Private Sub Auswertungen_1_6()
' Auswertungen_erstellen_1 Makro
Application.StatusBar = "PivotItem " & i + 1 & " von " & pvField.DataRange.Rows.Count _
& " wird bearbeitet"
Name = Application.Range("B2") '? =wks.Range("B2") Wert auf aktivem Blatt? _
Application("B2") ist eigentlich identisch mit Range("B2")
Range("AM10").Value = pvField.DataRange.Range("A1").Offset(i, 0).Text
'Range("F2").Select 'Zeile ist überflüssig
dTimeStart = Now + TimeValue("00:00:45") '45 Sekunden = Zeit zur Aktualisierung von Daten
Application.OnTime dTimeStart, "Erstellen_pdf"
End Sub
Private Sub Erstellen_pdf()
MsgBox "Test Erstellen_pdf, Name | Range(""AM10""): " & Name & " | " & Range("AM10") ' _
Testzeile
'Code zum Erstellen des PDF
'nächstes Pivotitem auswerten
i = i + 1
If i = pvField.DataRange.Rows.Count Then
Call Auswerten_1_6_Stop
Else
Call Auswertungen_1_6
End If
End Sub