Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
780to784
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
780to784
780to784
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Hallo Matthias R -> Fortschrittsbalken

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hallo Matthias R -> Fortschrittsbalken
18.07.2006 11:44:31
Matthias
Hallo Andreas,
das Problem in deinem Fall ist, dass die Anzahl der Dateien nicht bekannt ist. Um sie herauszufinden, bräuchte man eine Routine, die alleine schon fast so lange dauert wie das Makro selbst. Würde also doppelte Laufzeit bedeuten, und am Anfang weiß der Anwender auch nicht, was Sache ist (mangels Fortschrittanzeige in der ersten Hälfte der Laufzeit).
Gruß Matthias G
AW: Hallo Matthias R -> Fortschrittsbalken
18.07.2006 12:56:59
Andreas
Verstehe, aber vielen Dank für Deine Mühe. Schade, wäre schön gewesen.
Könntest Du evtl. trotzdem Deine Beschreibung aus Deinem Beitrag ein wenig
ausführlicher gestalten, vielleicht komme ich später damit alleine zurecht,
wenn ich mal einen anderen Anwendungsfall habe.
Gruß & Danke vorab
Andreas
Anzeige
AW: Hallo Matthias R -> Fortschrittsbalken
18.07.2006 14:24:41
Matthias
Hallo Andreas,
ok, ich habe das Beispiel vom anderen Matthias mal ein wenig angepasst und einiges geändert:

Sub Statusbalken(wert, max, Optional proz = False)
' wert = aktueller Fortschritt
' max = maximaler Wert (100%)
' wenn max<0, wird die Statuszeile wieder zurückgesetzt
' proz: wenn True, dann Prozentangabe links vom Fortschrittsbalken
Const maxbreite = 100 'Breite des Statusbalkens in Zeichen
Dim Mess As String
Dim P As Integer, pro As String
If max > 0 Then
P = wert / max * maxbreite
If proz Then Mess = Format(wert / max, "0% ")
Mess = Mess & String(P, ChrW(&H25A0)) & String(maxbreite - P, ChrW(&H25A1))
If Application.StatusBar <> Mess Then Application.StatusBar = Mess
Else
Application.StatusBar = False
End If
End Sub
Sub test()
Const anz = 100000
Dim i, j
For i = 1 To anz
Statusbalken i, anz, True 'mit Prozentangabe
Next i
MsgBox "Fertig!"
Statusbalken 1, -1 'ausschalten
End Sub

Du musst den Prozeduraufruf "Statusbalken wert, max" in einer Schleife setzen, von der du weißt, wie oft sie durchlaufen wird. Ich habe den Wert so hoch gesetzt, damit man auch etwas sieht ;-)
du könntest es auch so machen:

Sub test2()
Const anz = 300
Dim i, j
For i = 1 To anz
Statusbalken i, anz
'innere Schleife
For j = 1 To 1000000
'tu nix
Next j
Next i
MsgBox "Fertig!"
Statusbalken 1, -1 'ausschalten
End Sub

Wie gesagt, der Aufruf muss in einer Schleife stehen, damit eine laufende Fortschrittsanzeige zustande kommt. Und zwar eher nicht in einer Schleife, die 10000 mal durchlaufen wird (wie oben in test), dann wird die Prozedur zu oft aufgerufen und kostet nur Rechenzeit. Im zweiten Beispiel (test2) den Aufruft Statusbalken also in der äußeren Schleife.
Gruß Matthias
Anzeige
AW: Hallo Matthias R -> Fortschrittsbalken
18.07.2006 15:50:35
Andreas
Hallo Matthias G,
schaut ganz gut aus.
Ich probiere mal ein bisschen rum.
Danke & Gruß
Andreas
AW: Hallo Matthias R -> Fortschrittsbalken
19.07.2006 16:34:01
Matthias
Hallo Andreas,
um den Fortschrittsbalken in Dein Beispiel einzubauen, müßte ich vorher die gesamte Prozedur durchlaufen bzw. ein neues Makro schreiben, welche je Verzeichnis die Anzahl Dateien zählt, da der Fortschrittsbalken wissen muss, wie viele Dateien es max. anzuzeigen gibt. Erst dann kann der Fotrschritt angezeigt werden. Das Makro würde damit insgesamt doppelt so lange laufen.
Anliegend ein Beispiel, in dem aus Dateien Inhalte in eine Zieldatei kopiert werden.
https://www.herber.de/bbs/user/35225.xls
Das Kopieren ist nur beispielhaft gezeigt, bei jedem Dateiwechsel fragt Excel, ob die Daten in der Zwischenablage bleiben sollen. Diese Abfrage läßt sich natürlich vermeiden und muss später ausgeschaltet werden, aber so kann man die Fortschrittsanzeigen besser verfolgen. Das wäre sonst bei schnellen lokalen Platten und geringen Datenmengen kaum möglich.
Um die Musterdatei nutzen zu können, sind mehrere Quelldateien anzulegen. Diese sollten z.B. die Namen Test1.xls, Test2.xls, usw. heissen, also mit dem gleichen Namen starten. Die Dateien können auch leer sein.
Das Makro in der Musterdatei fragt das Quellverzeichnis sowie den Namen ab, mit dem alle Dateien beginnen. Es verarbeitet auch nur dies, also in diesem Fall alle, die mit "test" beginnen.
Probiers mal aus.
Gruß, Matthias R
Anzeige
AW: Hallo Matthias R -> Fortschrittsbalken
21.07.2006 06:43:39
Andreas
Hallo Matthias R,
danke, ich werde mir Deine Datei mal ansehen.
Gruß
Andreas

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige