Ladebalken für Makros
Betrifft: Ladebalken für Makros
von: Sebastian
Geschrieben am: 30.08.2007 15:54:50
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
Betrifft: Meldung in Application.StatusBar o.T.
von: eres
Geschrieben am: 30.08.2007 16:07:02
.
Betrifft: AW: Ladebalken für Makros
von: Oberschlumpf
Geschrieben am: 30.08.2007 16:07:36
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
Betrifft: AW: Ladebalken für Makros
von: Sebastian
Geschrieben am: 30.08.2007 16:48:48
Ja, hatte so was wie eine ProgressBar im Kopf (JProgressBar aus Java), aber wusste nicht dass es in vba auch sowas gibt
Betrifft: AW: Ladebalken für Makros
von: Matthias G
Geschrieben am: 30.08.2007 16:11:19
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, wird die Statuszeile wieder zurückgesetzt
' proz: prozentangabe links vom Fortschrittsbalken
Const maxbreite = 30 '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, "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
Betrifft: AW: Ladebalken für Makros
von: Bernd
Geschrieben am: 31.08.2007 09:30:21
Hi Basti,
schau' mal, ob dir aus der beiliegenden Datei ein makro zusagt.
https://www.herber.de/bbs/user/45577.xls
Grüße
Bernd
Betrifft: AW: Ladebalken für Makros
von: Sebastian
Geschrieben am: 02.09.2007 12:05:49
Danke Bernd, genau dass habe ich gesucht!
Beiträge aus den Excel-Beispielen zum Thema "Ladebalken für Makros"