Microsoft Excel

Herbers Excel/VBA-Archiv

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

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"