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

UserForm mit Progressbalken...

UserForm mit Progressbalken...
14.08.2014 10:25:02
Thorben
Moinsen alle,
Ich habe folgenden Code mit dem ich in der Statusbar den Progress anzeigen lasse.
Das funktioniert sehr gut!
Könnt Ihr mir helfen diesen fortlaufenden Prozess
in eine Userform mit Fortschrittsbalken zu übergeben.
Das wäre echt klasse!
  • Option Explicit
    
    Sub StatusBar()
    Dim x As Integer
    Dim MyTimer As Double
    'Change this loop as needed.
    For x = 1 To 15000
    'Dummy Loop here just to waste time.
    'Replace this loop with your actual code.
    MyTimer = Timer
    Do
    Loop While Timer - MyTimer 

  • Vielen lieben Dank schon mal
    MfG
    Thorben

    12
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: UserForm mit Progressbalken...
    14.08.2014 11:21:10
    Daniel
    Hi
    1.1 erstelle eine Userform
    1.2 setze die Userform-Eigenschaft ShowModal = False
    1.3 füge in die Userform aus den Steuerelementen das "Microsoft ProgressBar Control" hinzu (falls in der Werkzeugbox nicht vorhanden, über Kontextmenü - zusätzliche Steuerelemente hinzufügen)
    im Code dann:
    2.1 starte die Userform mit Userform1.Show 0
    2.2 steuere die Anzeige der Progressbar mit dem Befehl: Userform1.Progressbar1.Value = x
    x ist ein Wert zwischen Max- und Min-Wert der Progressbar (standardmässig zwischen 0 und 100)
    Gruß Daniel

    Anzeige
    @ Luschi - keine Rückmeldung ab 12% bis MsgBox
    14.08.2014 12:12:16
    Thorben
    Hallo ihr beiden,
    besten dank!
    @ Luschi - code friert Excel ein "keine Rückmeldung ab 12% bis MsgBox kommt"
    MfG
    Thorben

    AW: @ Luschi - keine Rückmeldung ab 12% bis MsgBox
    14.08.2014 12:24:19
    Daniel
    Hi
    Wenn Excel sehr beschäftigt ist, dann vergisst es manchmal sich beim Betriebssystem zurückmelden und dann sieht es aus, als sei es abgestürzt obwohl es fröhlich weiterrechnet.
    der Befehl der Excel hier so fordert, ist das Call Sleep(25)
    wenn ich den Wert kleiner nehme, dann funktionierts.
    Gruß Daniel

    Anzeige
    Bei mir gehts nicht! Call Sleep egal welcher wert
    14.08.2014 13:09:54
    Thorben
    Könnt ihr nochmal prüfen ob das ohne Call Sleep geht.
    Ansonsten total genial!
    Danke und Gruß
    Thorben

    AW: Bei mir gehts nicht! Call Sleep egal welcher wert
    14.08.2014 13:35:08
    Daniel
    HI
    kannst du doch selber prüfen.
    Call Sleep ist nur drin, damit die Schleife nicht in nullkommanix durchrauscht, weil sie sonst nichts zu tun hat.
    Einfach löschen oder auskommentieren (Hochkomma ' davorsetzten)
    Gruß Daniel

    AW: Bei mir gehts nicht! Call Sleep egal welcher wert
    15.08.2014 00:04:18
    Mullit
    Hallo,
    war in Deinem ersten Code drin und müsste hier auch wieder rein:
    '...
        For lngIndex = 1 To ProgressBar1.Max
            ProgressBar1.Value = lngIndex
            If lngIndex Mod 15 = 0 Then
               Me.Label1.Caption = "Progress: " & lngIndex & " of 1500: " & Format(lngIndex / 1500, "Percent")
               Me.Repaint
            End If
            DoEvents
            Sleep 25&
        Next
    '...

    Gruß,

    Anzeige
    @Mullit, vielen lieben Dank! Jetzt läufts rund.owT
    15.08.2014 08:08:36
    Thorben
    .

    AW: Nochmal für alle fertig und zum Download!!! MfG
    15.08.2014 17:02:56
    Luschi
    Hallo Torben,
    daß Du in Deinem Beispiel uns zwingst, eine Schleife zu durchlaufen, die jenseits von 'Gut & Böse' ist (57.000 Durchläufe), kann ich nicht verstehen. Zudem macht die Prozedur ja nichts weiter als pro Schleifenschritt ein bischen zu warten und dann den Schleifenzähler zu erhöhen. Eigentlich ist doch solche Technologie dafür gedacht anzuzeigen, wie weit ein gewisser Prozeßschritt gediehen ist (Kopieren einer großen Datei [siehe Win-Explorer] - Suchen von Werten in einer Datenbank usw.)-
    Ich frage also, wo liegt der Nutzen Deines Beispiel für den Anwender?
    Gruß von Luschi
    aus klein-Paris

    Anzeige
    Ich will das "Warum" mal erklären :o)
    18.08.2014 10:27:27
    Thorben
    Hallo Luschi,
    Hallo anderen,
    57000 Schleifen, sorry vergessen zu veringern!
    Einfach mal das "rote Kreuz" drücken...! Dann hörts auf...
    Aber Warum:
    In Excel wie auch in Access gibt es immer wieder sich wiederholende Auswertungen und Berechnungen
    die während der Prozedur das ausführende Programm, also Excel.exe oder Access.exe so derart befeuern
    das diese sich bei Windoof so lange nicht zurückmelden oder mal sagen "hallo ich lebe noch, dauert aber noch so und so lange" bis die Prozedur abgeschlossen oder gewechselt wird ala "Call" mir einen.
    Wenn dann auch noch ScreenUpdate etc. auf = False stehen, passiert so lange nichts bis alles fertig ist!!!
    Statusbalken oder Progressbars die innerhalb solcher Prozeduren abgehandelt werden sind dann nur noch zuätzliche Bremsen oft auch kompliziert einzubinden und würden um Zweifel keinen Fortschritt anzeigen!!!!.
    Starre Application.StatusBar Texte finde ich auch langweilig und nichtssagend.
    Mir persönlich gefällt das überhaupt nicht.
    Und da aber ich weiß wie lange meine Excel- Accessdateien so benötigen bis sie fertig sind, öffne ich zeitgleich einfach eine entsprechend Worddatei (immer schön angepasst und umbenannt) in der der Status/Progressbalken "fast" oder sogar exakt so lange läuft wie die Prozedur in Excel/Acces benötigt.
    Das kostest nichts, ist einfach zu händeln und gibt mir ein Visuelles Feedback über den Fortschritt!
    Das parralele öffnen meine Dateien erledige ich per Batchdatei wie folgt:
    @echo off
    start cmd /C start /D "H:\Pfad\Pfad\Pfad\Pfad\Zielordner" Progresstimer.docm
    timeout 1
    start "C:\Pfad\Pfad\Pfad\Zielordner" "%cd%\Datentabellen.accdb"
    Call Excel.bat
    Exit
    
    Ich habe mir so verschiedene Batchdateien zurechtgelegt die untereinander / nacheinander Aufrufen
    und ich morgens nur einmal ausführen muss, nach dem ersten Kaffee meinen Status in der Worddatei prüfe wie weit er denn ist (und ja aus Bequemlichkeit habe ich keine Lust mir die Zeit zu merken wann ich den angefangen habe oder im Kopf zu subtrahieren wie lange es noch dauert wenn ich es mir gemerkt hätte :o) ... schöne neue Welt)
    Für mich ist das eine tolle und einfache Art (gerne auch "Krücke" genannt) ein Visuelles Feedback zu bekommen wo (explizit) Excel gerne mal stumm ist und Windoof nichts merk!!!
    Zum Teekochen übrigens auch geeinet!
    Einfach die Schleife auf 10000 stellen (entspricht ca.5 Minuten) und ziehen lassen :P
    Wie gesagt es handelt sich hier um etwas wie ich es mir vorgestellt habe und entsprechend für mich umgesetzt habe.
    Alles andere bleibt im Sinne des Betrachters!
    Vorenthalten wollte ich es aufgrund des "Forumgedankens" keinem, also "Public"
    Ich hoffe ich war nicht zu ausschweifend aber auch wenn es nicht immer so rüberkommt oder auf den ersten Blick ersichtlich ist was oder wofür oder warum, gibt es für den Fragenden i.d.R. immer einen guten Grund dieses oder jenes zu erfragen und zu erfahren!
    In diesem Sinne!
    Allen einen guten Start in die Woche und happy Exceln!
    MfG
    Thorben

    Anzeige
    Ich will das "Warum" mal erklären :o)
    18.08.2014 10:27:53
    Thorben
    Hallo Luschi,
    Hallo anderen,
    57000 Schleifen, sorry vergessen zu veringern!
    Einfach mal das "rote Kreuz" drücken...! Dann hörts auf...
    Aber Warum:
    In Excel wie auch in Access gibt es immer wieder sich wiederholende Auswertungen und Berechnungen
    die während der Prozedur das ausführende Programm, also Excel.exe oder Access.exe so derart befeuern
    das diese sich bei Windoof so lange nicht zurückmelden oder mal sagen "hallo ich lebe noch, dauert aber noch so und so lange" bis die Prozedur abgeschlossen oder gewechselt wird ala "Call" mir einen.
    Wenn dann auch noch ScreenUpdate etc. auf = False stehen, passiert so lange nichts bis alles fertig ist!!!
    Statusbalken oder Progressbars die innerhalb solcher Prozeduren abgehandelt werden sind dann nur noch zuätzliche Bremsen oft auch kompliziert einzubinden und würden um Zweifel keinen Fortschritt anzeigen!!!!.
    Starre Application.StatusBar Texte finde ich auch langweilig und nichtssagend.
    Mir persönlich gefällt das überhaupt nicht.
    Und da aber ich weiß wie lange meine Excel- Accessdateien so benötigen bis sie fertig sind, öffne ich zeitgleich einfach eine entsprechend Worddatei (immer schön angepasst und umbenannt) in der der Status/Progressbalken "fast" oder sogar exakt so lange läuft wie die Prozedur in Excel/Acces benötigt.
    Das kostest nichts, ist einfach zu händeln und gibt mir ein Visuelles Feedback über den Fortschritt!
    Das parralele öffnen meine Dateien erledige ich per Batchdatei wie folgt:
    @echo off
    start cmd /C start /D "H:\Pfad\Pfad\Pfad\Pfad\Zielordner" Progresstimer.docm
    timeout 1
    start "C:\Pfad\Pfad\Pfad\Zielordner" "%cd%\Datentabellen.accdb"
    Call Excel.bat
    Exit
    
    Ich habe mir so verschiedene Batchdateien zurechtgelegt die untereinander / nacheinander Aufrufen
    und ich morgens nur einmal ausführen muss, nach dem ersten Kaffee meinen Status in der Worddatei prüfe wie weit er denn ist (und ja aus Bequemlichkeit habe ich keine Lust mir die Zeit zu merken wann ich den angefangen habe oder im Kopf zu subtrahieren wie lange es noch dauert wenn ich es mir gemerkt hätte :o) ... schöne neue Welt)
    Für mich ist das eine tolle und einfache Art (gerne auch "Krücke" genannt) ein Visuelles Feedback zu bekommen wo (explizit) Excel gerne mal stumm ist und Windoof nichts merk!!!
    Zum Teekochen übrigens auch geeinet!
    Einfach die Schleife auf 10000 stellen (entspricht ca.5 Minuten) und ziehen lassen :P
    Wie gesagt es handelt sich hier um etwas wie ich es mir vorgestellt habe und entsprechend für mich umgesetzt habe.
    Alles andere bleibt im Sinne des Betrachters!
    Vorenthalten wollte ich es aufgrund des "Forumgedankens" keinem, also "Public"
    Ich hoffe ich war nicht zu ausschweifend aber auch wenn es nicht immer so rüberkommt oder auf den ersten Blick ersichtlich ist was oder wofür oder warum, gibt es für den Fragenden i.d.R. immer einen guten Grund dieses oder jenes zu erfragen und zu erfahren!
    In diesem Sinne!
    Allen einen guten Start in die Woche und happy Exceln!
    MfG
    Thorben
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige