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
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
Um einen Ladebalken in Excel VBA zu erstellen, kannst du die folgende Schritt-für-Schritt-Anleitung befolgen:
UserForm Erstellen:
Entwicklertools > Visual Basic.UserForm und füge eine ProgressBar hinzu.VBA-Code Einfügen:
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
Makro Erstellen:
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
Makro Ausführen:
MeinMakro aus und beobachte, wie der Fortschrittsbalken während der Ausführung aktualisiert wird.Ladebalken wird nicht angezeigt:
UserForm1.Show korrekt aufrufst.Fortschritt wird nicht aktualisiert:
UpdateProgress-Methode korrekt aufgerufen wird und der Wert innerhalb der Grenzen von 0 und 100 liegt.Makro läuft nicht:
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
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
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.
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.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen