Warum nicht die Statuszeile für ne Progressbar
03.02.2009 00:04:05
Daniel
nutzen?
ist zwar nicht so schön, aber wesentlich einfacher:
einfach dieses Makro irgendwo in einem allgemeinen Modul unterbringen und immer aufrufen, wenn sich am Programmfortschritt was ändert:
Sub Progressbar(Erfüllungsgrad As Double, Optional Segmente As Integer = 10)
Dim Anz1 As Integer
Dim Anz2 As Integer
Select Case Erfüllungsgrad
Case 0
Application.StatusBar = False
Case Else
With WorksheetFunction
Erfüllungsgrad = .Min(Erfüllungsgrad, 1)
Anz1 = Round(Erfüllungsgrad * Segmente, 0)
Anz2 = Segmente - Anz1
Application.StatusBar = .Rept(ChrW(9679), Anz1) & .Rept(ChrW(3664), Anz2)
End With
End Select
End Sub
der Erfüllungsgrad ist ein Wert von 0-1 (1 = 100% erfüllung), die Segmentanzahl kannst du beliebig von 1-x wählen, halt soviele Zeichen wie in die Statuszeile reinpassen.
zum Aktualisieren rufts du einfach das Makro auf, z.b. so:
Sub Test
dim x as long
for x = 1 to 10000
Cells(x, 1).Value = "Zeile " & x
Call Progressbar(x/10000, 100)
next
call Progressbar(0)
End Sub
mit Call Progessbar(0) wird die Statuszeile wieder für die normalen Excelmeldungen freigegeben.
Gruß, Daniel
ps leider ist die Statuszeile nur mit der Schriftart Tahoma formatierbar, daher ist es nicht ganz so leicht, passende Zeichen zu finden.