Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1160to1164
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

progressbar

progressbar
Pasi
Hallo zusammen,
ich habe wieder einmal ein Problem. Ich hoffe jemand von euch kann mir helfen.
Ich habe ein Makro in das ich eine Fortschrittsanzeige eingebaut habe.
Dummerweise funktionierts nicht ganz :-( ...
Problem ist, er öffnet die ProgressBar genau wie es sein soll. Ich muss allerdings
jedesmal das Fenster der Progressbar schließen damit es weiterläuft und er mir den
hochlaufenden Balken anzeigt. Sprich wenn mein Makro 1000Mal die Schleife läuft
muss ich tausens mal das Fenster über x schließen. Meiner Meinung nach muss er
sich doch automatisch aktualisieren.
Hoffe die Beschreibung ist verständlich. Es funktioniert also halb, nur das die Aktualisierung nicht klappt ...
Anbei mein Code:
...
...
...
Länge = 0
LängeBalken = 0
Schritt = FortschrittsanzeigeAuslesen.ProgressBar1.Width / ZeilenAuslese
LängeGes = FortschrittsanzeigeAuslesen.ProgressBar1.Width
...
...
Load ProgressBar
Do
Do Until Not IsEmpty(Cells(ReiheLes, SpalteLes)) And IsNumeric(Cells(ReiheLes, SpalteLes))
SpalteLes = SpalteLes + 1
If SpalteLes > 255 Then
ReiheLes = ReiheLes + 1
SpalteLes = 3
'Zähler Fortschrittsbalken
Länge = Länge + Schritt
LängeBalken = Länge / LängeGes * 100
FortschrittsanzeigeAuslesen.ProgressBar1 = LängeBalken
DoEvents
FortschrittsanzeigeAuslesen.Show
If ReiheLes = ZeilenAuslese Then
Exit Do
End If
End If
Loop
...
...
Loop
...
...
Schon jetzt Danke euch!
MfG
Pasqual

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: progressbar
25.06.2010 07:58:40
Ramses
Hallo
Die Progressbar gehört in eine Userform und muss dort aktualisiert werden und nicht jedes mal mit
FortschrittsanzeigeAuslesen.Show
neu angezeigt werden, sondern allenfalls mit
FortschrittsanzeigeAuslesen.Progressbar1.Value = LängeBalken
aktualisiert werden
Gruss Rainer
AW: progressbar
25.06.2010 08:08:14
Pasi
Hallo Rainer,
das geht ja schnell.
Hmmm.
Am Anfang hatte ich es so:
...
...
...
Länge = 0
LängeBalken = 0
Schritt = FortschrittsanzeigeAuslesen.ProgressBar1.Width / ZeilenAuslese
LängeGes = FortschrittsanzeigeAuslesen.ProgressBar1.Width
...
...
Load ProgressBar
FortschrittsanzeigeAuslesen.Show
Do
Do Until Not IsEmpty(Cells(ReiheLes, SpalteLes)) And IsNumeric(Cells(ReiheLes, SpalteLes))
SpalteLes = SpalteLes + 1
If SpalteLes > 255 Then
ReiheLes = ReiheLes + 1
SpalteLes = 3
'Zähler Fortschrittsbalken
Länge = Länge + Schritt
LängeBalken = Länge / LängeGes * 100
FortschrittsanzeigeAuslesen.ProgressBar1 = LängeBalken
If ReiheLes = ZeilenAuslese Then
Exit Do
End If
End If
Loop
...
...
Loop
...
...
das klappt aber auch nicht. Da bleibt er beim ersten mal hängen. Ich klicke aufs x und dann läuft er ohne progressbar weiter.
Ich habe auch schon versucht das Ganze in die Userform der ProgressBar zu packen.
nach dem Motto:
Sub Progressbar
FortschrittsanzeigeAuslesen.ProgressBar1 = LängeBalken
End Sub
dahin zu springen habe ich dann über application.Run "ProgressBar" gemacht.
dann blieb er aber immer in dem Teil hängen und lief nicht im normalen Makro weiter.
Warum?
Danke dir für deine Hilfe
Anzeige
AW: progressbar
25.06.2010 17:06:27
dan
Hallo Pasqual,
versuch es mit zwei UserForms. Der erste (MainUserForm) beinhaltet den Code, wo Deine Berechnung statfindet. Der zweite (ProgressUserForm) wird zur Fortschrittsanzeige benutzt. Hier code fuer beide UserForms. Es funktionier wie callback. Wenn der ProgressUserForm angezeigt wird, ruft er zurueck zum 'Vater', dem MainUserForm :-). Der Vater starten in dem zurueck-Ruf (frmProgress_DoAction) die Prozedur mit Berechnungen und per frmProgress.Update aktualisiert er die Fortschrittsanzeige.
Gruss dan, cz.
' -------------------------------------------
' MainUserForm Code
' -------------------------------------------
Option Explicit
Private WithEvents frmProgress As ProgressUserForm
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub frmProgress_DoAction()
' Deine Berechnung here ...
' nur test Code:
Dim i As Integer
For i = 1 To 100 Step 10
frmProgress.Update progressInPercents:=i
Sleep dwMilliseconds:=1000
Me.Repaint
Next i
Unload frmProgress
End Sub

Private Sub StartActionCommandButton_Click()
Set frmProgress = New ProgressUserForm
frmProgress.Show
End Sub

Private Sub UserForm_Initialize()
End Sub
' -------------------------------------------
' ProgressUserForm Code
' -------------------------------------------
Option Explicit
Public Event DoAction()
Private Sub UserForm_Activate()
RaiseEvent DoAction
End Sub

Private Sub UserForm_Initialize()
progress.Width = 0
End Sub

Public Sub Update(progressInPercents As Integer)
If (progressInPercents >= 0 And progressInPercents 

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige