Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CheckBox
BildScreenshot zu CheckBox CheckBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Werkzeug
BildScreenshot zu Werkzeug Werkzeug-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen

UserForm mit Progressbalken...

Betrifft: UserForm mit Progressbalken... von: Thorben
Geschrieben am: 14.08.2014 10:25:02

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 < 0.1
    Application.StatusBar = "Progress: " & x & " of 15000: " & Format(x / 15000, "Percent")
    DoEvents
    
    Next x
    Application.StatusBar = False
    End Sub


  • Vielen lieben Dank schon mal
    MfG
    Thorben

      

    Betrifft: AW: UserForm mit Progressbalken... von: Daniel
    Geschrieben am: 14.08.2014 11:21:10

    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


      

    Betrifft: AW: UserForm mit Progressbalken... von: Luschi
    Geschrieben am: 14.08.2014 11:59:08

    Hallo Thoben,

    hier mal ein praktisches Beispiel dazu:

    https://www.herber.de/bbs/user/92099.xls

    Gruß von Luschi
    aus klein-Paris


      

    Betrifft: @ Luschi - keine Rückmeldung ab 12% bis MsgBox von: Thorben
    Geschrieben am: 14.08.2014 12:12:16

    Hallo ihr beiden,

    besten dank!

    @ Luschi - code friert Excel ein "keine Rückmeldung ab 12% bis MsgBox kommt"

    MfG
    Thorben


      

    Betrifft: AW: @ Luschi - keine Rückmeldung ab 12% bis MsgBox von: Daniel
    Geschrieben am: 14.08.2014 12:24:19

    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


      

    Betrifft: Bei mir gehts nicht! Call Sleep egal welcher wert von: Thorben
    Geschrieben am: 14.08.2014 13:09:54

    Könnt ihr nochmal prüfen ob das ohne Call Sleep geht.
    Ansonsten total genial!
    Danke und Gruß
    Thorben


      

    Betrifft: AW: Bei mir gehts nicht! Call Sleep egal welcher wert von: Daniel
    Geschrieben am: 14.08.2014 13:35:08

    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


      

    Betrifft: AW: Bei mir gehts nicht! Call Sleep egal welcher wert von: Mullit
    Geschrieben am: 15.08.2014 00:04:18

    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ß,


      

    Betrifft: @Mullit, vielen lieben Dank! Jetzt läufts rund.owT von: Thorben
    Geschrieben am: 15.08.2014 08:08:36

    .


      

    Betrifft: Nochmal für alle fertig und zum Download!!! MfG von: Thorben
    Geschrieben am: 15.08.2014 14:49:26

    https://www.herber.de/bbs/user/92134.zip

    MfG
    Thorben


      

    Betrifft: AW: Nochmal für alle fertig und zum Download!!! MfG von: Luschi
    Geschrieben am: 15.08.2014 17:02:56

    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


      

    Betrifft: Ich will das "Warum" mal erklären :o) von: Thorben
    Geschrieben am: 18.08.2014 10:27:27

    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


      

    Betrifft: Ich will das "Warum" mal erklären :o) von: Thorben
    Geschrieben am: 18.08.2014 10:27:53

    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


     

    Beiträge aus den Excel-Beispielen zum Thema "UserForm mit Progressbalken..."