Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
744to748
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
744to748
744to748
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Fortschrittsblaken

Fortschrittsblaken
21.03.2006 11:27:41
Alex
Hallo,
ich habe ein Problem mit einem Fortschrittsbalken. (natürlich habe ich vorher im Forum danach geschaut, allerdings keine direkte Lösung für mein Problem gefunden)
Ich habe das Buch Excel-VBA von Bernd Held (Kompendium). Darin ist beschrieben, wie man einen Balken mit Hilfe eines Userform machen kann. Mit folgendem Quellcode:

Private Sub CommandButton1_Click()
Dim i as Integer
Dim iMax
label1.width = 0
iMax = 1000
For i = 1 to iMax
label1.width = (i + 1) / 10
label1.textalign = fmTextAlignCenter
label1.Caption = Int(i / 10) & "%"
label1.font.Bold = True
label1.ForeColor= RGB(256, 256, 256)
DoEvents
Next
End Sub

So, das funktioniert nun auch wunderbar, allerdings nicht in Abhängigkeit mit meinem Programm. Ich habe da einige Routinen laufen, die bestimmt einige Minuten dauern, zuerst kommt der Balken, der von 0 auf 100 schnellt und anschließend dauert es noch eine Weile, bis mein Programm fertig gelaufen ist.
Bedeutet das "DoEvents", dass der Balken generiert wird und nebenbei die Routine läuft? Wie müsste ich meinen Quellcode einbinden, dass es mit der Fortschrittsnazeige hinkommt?
Für Tipps wäre ich dankbar.
Gruß
Alex

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fortschrittsblaken
21.03.2006 11:37:17
Andreas
Hi Alex,
vom Prinzip die Sub nehmen wie du sie bereits hast, allerdings musst du dann einen entsprechenden Integerwert für i übergeben während dein Programm läuft, also z.B.

Private Sub UpdateProgress(i as Integer)
Dim iMax
label1.width = 0
iMax = 1000
label1.width = (i + 1) / 10
label1.textalign = fmTextAlignCenter
label1.Caption = Int(i / 10) & "%"
label1.font.Bold = True
label1.ForeColor= RGB(256, 256, 256)
DoEvents
End Sub

Und dann noch in deinem Programm/Makro folgenden Aufruf:
Sub MeinMakroprogramm
' ToDo1
Call UpdateProgress(100)
' ToDo2
Call UpdateProgress(250)
' etc. etc.
End Sub
Hilft das weiter?
Grüße
Andreas
Anzeige
AW: Fortschrittsblaken
21.03.2006 11:45:54
Harald
Hi Alex,
markier mal DoEvents und drücke F1. Ist nich so ungefährlich...genau wie die restlichen Ausführungen deines/unseres "Lieblings-Autors" ;-)))
Zitat der Excel-Hilfe für heldenhafte DoEvents.
"Die Folgen eines solchen Aufrufs sind nicht vorhersehbar."
i ist die Zählervariable die der Fortschrittsbalken nutzt, der du aber auch in deiner Prozedur verwenden musst. Das Ende der Schleife (iMax) muss auch deiner prozedur angepasst werden. Somit kommt deine Prozedur mit diesen Variablen direkt nach (oder besser) statt DoEvents.
Gruss Harald
AW: Fortschrittsblaken
21.03.2006 13:02:13
Uduuh
Hallo,
ich würde, davon abgesehen, dass der Code nicht i.O. ist, die Finger davon lassen, da der Code zusätzlich verlangsamt wird.
Gruß aus’m Pott
Udo

Anzeige
AW: Fortschrittsblaken
21.03.2006 13:17:10
Alex
Hallo,
danke für die schnellen Antworten.
Ich kann das nicht abschätzen, ob der Code in Ordnung ist oder nicht.
Ich habe ihn lediglich aus dem Buch übernommen (evtl. sind kleine Abtippfehler drin).
Ich denke, dass ich aber erstmal einen Ansatz gefunden habe. Neben dieser Variante habe ich noch was gelesen, dass man die Dauer der Prozedur erfassen kann um so eine Anzeige zu gestalten.
Gruß
Alex

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige