Diese Progressbar soll den fortschritt eines
Private Sub CommandButton1_Click()
Makros anzeigen.
Kann mir einer sagen wies geht oder wos steht???
Diese Progressbar soll den fortschritt eines
Private Sub CommandButton1_Click()
Makros anzeigen.
Kann mir einer sagen wies geht oder wos steht???
ProgressBar - Ingo 15.08.2002 - 12:20:28 (8)
Sub Test()
Testwert=10000
For I=1 to Testwert
Fortschritt= "Fortschritt: "&Int(I/Testwert*100)&"%"
Application.Statusbar=Fortschritt
Next I
Application.Statusbar=False
End Sub
Application.Statusbar=False muss sein, damit nach Ablauf der Prozedur wieder die normalen Meldungen angezeigt werden.
Gruss Udo
Ich nehm jetzt ma überall die standardnamen...
Der Button der angeklickt wird erhält folgenden Code:
Private Sub CommandButton1_Click()
UserForm1.Show
DoEvents
End Sub
So, dann erstellst du eine uf (=UserForm) auf die bastelst du 2 rahmen (Frame1 und Frame2). Der f1 wird dann den hintergrund bilden, der f2 den sich aufbauenden balken.
Wenn du soweit bist geh auf den code der uf und gib das ein:
Private Sub UserForm_Activate()
Call Programm
Unload Me
End Sub
(Achtung: nicht uf_click, sonder Activate! Programm ist der name des codes der eigentlich ablaufen soll)
Jetzt mach nen modul und gib folgendes ein:
Option Explicit
Dim mfstep As Double
Sub Programm()
Dim n As Integer
Call init(40)
Application.ScreenUpdating = False 'Der User sieht den Rechenprozess nicht
For n = 1 To 2000
Sheets(1).Range("a1") = n
Call refresh
Next n
Application.ScreenUpdating = False
End Sub
Die for-schleife die ich hier habe ist dein programm! Soll heißen, du nimmst deinen vorhandenen und packst ihn dahin. Und in diesen code solltest du an geeigneten stellen das „call refresh“ einfügen. Der befehl ruft das entsprechende unterprogramm auf, welches dann den balken „wachsen“ lässt. Also um so häufiger das ding steht, um so gleichmäßiger wächst der balken -> am besten in ne schleife packen...
So, fast fertig...
Jetzt noch die beiden unterprogrämmchen (im gleichen modul)
Sub initA(ITotalSteps As Long)
With UserForm1
.Frame2.Width = 0
mfstep = .Frame1.Width / 40
End With
End Sub
Und das refresh-teil:
Sub refreshA()
UserForm1.Frame2.Width = UserForm1. Frame2.Width + mfstep
UserForm1. Frame2.Caption = Format(UserForm1. Frame2.Width / 222, "0%")
DoEvents
End Sub
Das sollte jetzt alles sein und funtzen...
Wenn der balken zu groß wird oder net weit genug wächst teste mal andere Zahlen.(Bei „Call init(40)“ und „Width / 40“ statt 40 ne größere oder kleinere, siehst ja was sich ändert... und natürlich auch: „Frame2.Width / 222, "0%"“ die 222 ist die größe/breite der frames.. bei mir isse halt 222...)
Ich hoffe du kommst damit zum ziel
Gruß
Ingo