Fortschrittanzeige in For/Next Schleife?
09.11.2004 08:06:58
Oliver
Ich brauch wieder mal Eure Lösungsvorschläge. Ich habe ein Makro welches mir Daten in Textdateien schreibet. Es wird jede Zeile in eine Textdatei geschrieben. Da es sich dabei um ca. 1000 Zeilen handelt und je nach Rechnerleistung das etwas dauern kann, hätte ich gerne eine Fortschrittanzeige. Dazu habe ich in der Recherche ja auch einiges gefunden. Nur kann ich das leider nicht in die Realität umsetzen. Nachfolgend erst einmal das Makro:
Sub Daten_Export()
Dim Wiederholungen As Long, Dateipfad As Integer, Dateiname As String, _
Zeile As Long
Zeile = Cells(Rows.Count, 1).End(xlUp).Row
Dateipfad = FreeFile
For Wiederholungen = 2 To Zeile
Dateiname = Format(Wiederholungen - 2, "00000000") & ".txt"
Open "C:\Test\" & Dateiname For Output As #Dateipfad
Print #Dateipfad, Cells(Wiederholungen, 1) & "," & "," & "," & "," & _
Cells(Wiederholungen, 5)
Close #Dateipfad
Next
End Sub
Nun habe ich in der Recherche dieses Makro für eine Fortschrittanzeige gefunden:
Sub FortschrittanzeigeBar(PctDone As Single)
With Fortschrittanzeige
.lblDone.Width = PctDone * (.lblRemain.Width - 2)
.lblPct.Caption = Format(PctDone, "0%")
End With
DoEvents
End Sub
In der UserForm, die den Verlauf anzeigen soll steht dann folgnedes:
Private Sub UserForm_Initialize()
With Me.lblDone ' set the "progress bar" to it's initial length
.Top = Me.lblRemain.Top + 1
.Left = Me.lblRemain.Left + 1
.Height = Me.lblRemain.Height - 2
.Width = 0
End With
End Sub
In das obige Makro, also das welches die Daten exportiert, müssten dann folgende Befehle integriert werden:
Fortschrittanzeige.Caption = "Vorgang läuft ...."
FortschrittanzeigeBar 0.1
.
.
.
FortschrittanzeigeBar 1
Nun ist mein Problem, das ich
1. nicht weiß, wie man so etwas in einer For/Next Schleife realisiert und
2. soll bei der Anweisung FortschrittanzeigeBar xx nicht in 0,1er Schritten gezählt werden, sondern in 0,001er Schritten.
Ich hoffe, ich habe alle notwendigen Infos gegeben. Kann mir da jemand helfend unter die Arme greifen? Ich hoffe doch.
Danke Euch schon mal im Voraus für die Lösungsvorschläge,
Oliver