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

Schleifen Problem

Schleifen Problem
Schwed25
Hallo Liebes Forum,
habe mit folgendem Code ein Problem:
Sub Auswertungen_1_6()
' Auswertungen_erstellen_1 Makro
Dim i As Integer
For i = 1 To 6
Name = Application.Range("B2")
Range("AM10").Value = ActiveSheet.PivotTables("PivotTable1").PivotFields("HNr").PivotItems( _
i).Name
Range("F2").Select
Application.OnTime Now + TimeValue("00:00:45"), "Erstellen_pdf"
Next i
End Sub
Es soll aus einer Pivot Tabelle alle Einträge aus einem Berichtsfilter ausgeführt werden.
Dannach soll 45 Sekunden gewartet werden, damit alle Daten geladen werden können. Dann soll ein anderes Makro ausgeführt, damit ein pdf aus dem File erstellt werden kann.
Leider werden, derzeit alle Einträge der Pivot Tabelle durchgespielt und dann nach 45 Sekunden 6 mal dasselbe pdf erstellt.
Vielleicht kann mir jemand weiterhelfen.
VG,
Jonas

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

Betreff
Benutzer
Anzeige
AW: Schleifen Problem
13.07.2011 11:17:19
gerwas
Hallo
was macht denn deine Procedure "Erstellen_pdf"? Übergibts du der die betreffenden Datei? Wie? Über Zelle AM10? Name ist ein reserviertes Wort benenne es lieber in xName z.B.
Gruß gerwas
AW: Schleifen Problem
13.07.2011 11:27:06
Schwed25
Hallo Gerwas,
Erstellen pdf, ist folgendes
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"O:\Fach_Bereiche\V\V3-Grp\Kennzahlen und Reports\Händlerstatusbericht\PDF Auswertungen\" & Range("S2").Value & "\" & Range("D8").Value & "\" & Range("T1").Value & "\" & Range("C2").Value & "\" & Range("B2").Value & ", " & Range("B4").Value & ".pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False
Die DAtei wird gespeichert unter einem Feld das sich im Bericht befindet.
Nur leider, arbeitet die Schleife alles so schnell ab, dass das pdf erstellen erst am Ende der Schleife passiert.
Lg Jonas
Anzeige
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

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige