Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Ladebalken für Makros

Ladebalken für Makros
30.08.2007 15:54:00
Sebastian
Hi,
Ichhabe ein Makro welches einige Minuten braucht bis es fertig ist, gibt es da irgend eine geschickte möglichkeit dem Benutzer mitzuteilen dass Excel nicht abgestürzt ist sondern noch immer rattert?
MfG Basti

Anzeige

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

Betreff
Datum
Anwender
Anzeige
Meldung in Application.StatusBar o.T.
30.08.2007 16:07:02
eres
.

AW: Ladebalken für Makros
30.08.2007 16:07:36
Oberschlumpf
Hi Sebastian
Ja klar.
Am besten löst du das Problem, in dem in einem Userform eine Progressbar einbaust, und diese an den richtigen Stellen in deinem Code in Richtung Max-Wert der Progressbar ansteigen lässt.
Bei einer Progressbar handelt es sich um einen Fortschrittsbalken, den du sicher schon in anderen Programmen gesehen hast.
Hilft diese Überlegung?
Ciao
Thorsten

Anzeige
AW: Ladebalken für Makros
30.08.2007 16:48:00
Sebastian
Ja, hatte so was wie eine ProgressBar im Kopf (JProgressBar aus Java), aber wusste nicht dass es in vba auch sowas gibt

AW: Ladebalken für Makros
30.08.2007 16:11:19
Matthias
Hallo Basti,
ja, z.B. in der Statuszeile.
Am einfachsten ist es, wenn dein Makro eine Schleife enthält mit bekannter Anzahl von Durchgängen:

Sub Statusbalken(wert, max, Optional proz = False)
' wert = aktueller Fortschritt
' max = maximaler Wert (100%)
' wenn max 0 Then
P = wert / max * maxbreite
If proz Then Mess = Format(wert / max, "00% ")
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
Next i
MsgBox "Fertig!"
Statusbalken 1, -1 'ausschalten
End Sub
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


Gruß Matthias

Anzeige
AW: Ladebalken für Makros
02.09.2007 12:05:00
Sebastian
Danke Bernd, genau dass habe ich gesucht!
;
Anzeige
Anzeige

Infobox / Tutorial

Ladebalken für Makros in Excel VBA


Schritt-für-Schritt-Anleitung

Um einen Ladebalken in Excel VBA zu erstellen, kannst du die folgende Schritt-für-Schritt-Anleitung befolgen:

  1. UserForm Erstellen:

    • Gehe zu Entwicklertools > Visual Basic.
    • Erstelle eine neue UserForm und füge eine ProgressBar hinzu.
  2. VBA-Code Einfügen:

    • Füge den folgenden Code in das Modul deiner UserForm ein:
    Private Sub UserForm_Activate()
       Me.ProgressBar1.Min = 0
       Me.ProgressBar1.Max = 100
       Me.ProgressBar1.Value = 0
    End Sub
    
    Public Sub UpdateProgress(value As Integer)
       Me.ProgressBar1.Value = value
       Me.Repaint
    End Sub
  3. Makro Erstellen:

    • Erstelle ein Makro, das die UserForm anzeigt und die Fortschrittsanzeige aktualisiert:
    Sub MeinMakro()
       Dim i As Integer
       Dim maxWert As Integer
       maxWert = 100
    
       UserForm1.Show
    
       For i = 1 To maxWert
           ' Simuliere eine lange Berechnung
           Application.Wait Now + TimeValue("00:00:01")
           UserForm1.UpdateProgress (i)
       Next i
    
       Unload UserForm1
       MsgBox "Fertig!"
    End Sub
  4. Makro Ausführen:

    • Führe das Makro MeinMakro aus und beobachte, wie der Fortschrittsbalken während der Ausführung aktualisiert wird.

Häufige Fehler und Lösungen

  • Ladebalken wird nicht angezeigt:

    • Stelle sicher, dass du die UserForm mit UserForm1.Show korrekt aufrufst.
  • Fortschritt wird nicht aktualisiert:

    • Überprüfe, ob die UpdateProgress-Methode korrekt aufgerufen wird und der Wert innerhalb der Grenzen von 0 und 100 liegt.
  • Makro läuft nicht:

    • Achte darauf, dass die Makros in deiner Excel-Datei aktiviert sind.

Alternative Methoden

Eine alternative Möglichkeit für einen Fortschrittsbalken in Excel ist die Verwendung der Application.StatusBar. Hier ist ein einfaches Beispiel:

Sub Statusbalken()
    Dim i As Integer
    Dim maxWert As Integer
    maxWert = 100

    For i = 1 To maxWert
        ' Simuliere eine lange Berechnung
        Application.Wait Now + TimeValue("00:00:01")
        Application.StatusBar = "Fortschritt: " & i & " von " & maxWert
    Next i

    Application.StatusBar = False
    MsgBox "Fertig!"
End Sub

Praktische Beispiele

Hier ist ein weiteres Beispiel, das zeigt, wie du einen Fortschrittsbalken in einer Schleife verwenden kannst:

Sub FortschrittsbalkenBeispiel()
    Dim i As Long
    Dim maxWert As Long
    maxWert = 100000

    Application.ScreenUpdating = False
    For i = 1 To maxWert
        ' Führe hier deine Berechnung durch
        Application.StatusBar = "Bearbeite: " & i & " von " & maxWert
        ' Simuliere eine kleine Wartezeit
        Application.Wait Now + TimeValue("00:00:00.1")
    Next i
    Application.StatusBar = False
    Application.ScreenUpdating = True
    MsgBox "Fertig!"
End Sub

Tipps für Profis

  • Verwende DoEvents: Wenn dein Makro lange dauert, füge DoEvents ein, um Excel zu ermöglichen, auf Benutzerinteraktionen zu reagieren.

  • Optimierung der Performance: Reduziere die Anzahl der Aktualisierungen des Fortschrittsbalkens, um die Performance zu verbessern, indem du beispielsweise nur alle 10% aktualisierst.

  • Fortschrittsbalken in MsgBox: Du kannst auch einen Fortschrittsbalken in einer MsgBox anzeigen, indem du eine benutzerdefinierte UserForm erstellst.


FAQ: Häufige Fragen

1. Kann ich den Ladebalken während der Ausführung eines anderen Makros verwenden?
Ja, du kannst den Ladebalken in jedem Makro verwenden, solange du die UserForm oder die StatusBar entsprechend aufrufst.

2. Wie kann ich den Fortschrittsbalken anpassen?
Du kannst die Max-Eigenschaft der ProgressBar ändern, um den maximalen Wert anzupassen, oder das Design der UserForm ändern, um sie ansprechender zu gestalten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige