Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1036to1040
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

Fortschrittsbalken

Fortschrittsbalken
10.01.2009 11:27:00
Angela
Hallo
habe in einem Tab, wo eine längere Berechnung läuft.
Hier hätte ich gern einen Fortschrittsbalken.
Habe unter Hilfe das hier gefunden.
Bekomme es aber nicht hin, mein Makro mit einzubinden, das es gleichzeitig abläuft.
Die Makros:
Option Explicit
________________________________
Sub ShowDialog2()
Load ProgressDlg2 '1
ProgressDlg2.Show
End Sub


_______________________________________
Sub Main2() '4
Dim i As Long, tot As Long
Dim j As Long, totJ As Long
tot = 5000
totJ = 5
ProgressDlg2.Caption = "Progress Dialog Title"
For j = 1 To totJ
For i = 1 To tot
If i Mod 10 = 0 Then ProgressBar2 "Copying file " & j & " of " & totJ, j / totJ, "Writing record " & i & " of " & tot, i / tot
' do something
Next i
Next j
Unload ProgressDlg2
End Sub


______________________________________
Sub ProgressBar2(Msg1 As String, PctDone1 As Single, Msg2 As String, PctDone2 As Single)
With ProgressDlg2 '5
.lblMessage.Caption = Msg1
.lblDone.Width = PctDone1 * (.lblRemain.Width - 2)
.lblPct.Caption = Format(PctDone1, "0%")
.lblMessage2.Caption = Msg2
.lblDone2.Width = PctDone2 * (.lblRemain2.Width - 2)
.lblPct2.Caption = Format(PctDone2, "0%")
End With
'The DoEvents statement is responsible for the form updating
DoEvents
End Sub


************************
*************************
Userform
Option Explicit
------------------------------


Private Sub UserForm_Activate() '3
Call Main2
End Sub


_________________________


Private Sub UserForm_Initialize() '2
With Me.lblDone ' set the "progress bar" to it's initial length
.Top = Me.lblRemain.Top + 1
.Left = Me.lblRemain.Left + 1
.Height = Me.lblRemain.Height - 2
.Width = 0
End With
With Me.lblDone2 ' set the "progress bar" to it's initial length
.Top = Me.lblRemain2.Top + 1
.Left = Me.lblRemain2.Left + 1
.Height = Me.lblRemain2.Height - 2
.Width = 0
End With
End Sub


Wo müßte mein Makro eingefügt werden, damit es Zeitnah abläuft.
Gruß Angela

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fortschrittsbalken
10.01.2009 12:46:00
Oberschlumpf
Hi Angela
Ohne, dass ich schon jetzt ne Idee hätte, kannst du uns deine Datei als Bsp zur Verfügung stellen?
Hintergrund:
Zumindest ich weiß nicht, wie deine Tabelle aufgebaut ist.
Zumindest ich müsste aber trotzdem deine Tabelle "nachbauen", was ja nicht geht, weil....zumindest ich weiß nicht...usw
Grundsätzlich aber gilt für Fortschrittsbalken:
- du musst die Gesamtanzahl der Schleifendurchläufe (For/Next Do/Loop While/Wend...usw) ermitteln
- der MAX-Wert eines Fortschrittsbalkens ist dann die Gesamtanzahl
- und bei jedem Schleifendurchlauf wird dann der Wert des Fortschrittsbalkens um 1 erhöht und angezeigt
Ciao
Thorsten
Anzeige
AW: Fortschrittsbalken
10.01.2009 13:12:00
Angela
Hallo Thorsten,
Danke das Du Dich gemeldet hast.
Mir ist es bis jetzt nicht gelungen, mein Makro gleichzeitig mit dem Fortschrittsbalken zu starten.
Entweder er läuft vorher oder wird nachher ausgeführt.
Eine Beispielmappe ist sehr aufwendig, von daher möchte ich davon absehen.
Vielen Dank für Deine Hilfe.
Lieben Gruß Angela
AW: Fortschrittsbalken
10.01.2009 13:32:05
Heinz
Hi,
läuft denn während des Speicherns überhaupt eine Schleife?
Falls nicht, kannst du die dynamische Anzeige vergessen und musst dich auf eine
statische beschränken. Excel/VBA lässt sich beim Speichern nicht dazwischenfunken.
mfg Heinz
Anzeige
AW: Fortschrittsbalken
10.01.2009 13:34:42
Angela
Hallo Heinz,
Danke für die Meldung, aber es wird nicht gespeichert, sondern berechnet.
Lieben Gruß Angela
AW: Fortschrittsbalken
10.01.2009 13:51:00
Heinz
Hi,
einerlei, da gilt das analog.
mfg Heinz
AW: Fortschrittsbalken
10.01.2009 13:58:00
Angela
Hallo Heinz,
"einerlei, da gilt das analog."
Sollte mir das was sagen?
Tappe immer noch im dunkeln.
Habe noch eine Datei gefunden im Netz.
ins Modul

Sub Test()
Dim i As Long
Dim s As String
Dim usr As Variant
Set usr = usrProgress
s = ": Zählen von: 1 - 40000"
usr.Start s, 1, 40000
For i = 1 To 40000
usr.Progress mrs_TITEL & s, i
Next
'AlleKlassen
usr.Ende
End Sub


Dies in der Userform


Sub Start(ByVal Titel As String, ByVal Start As Long, ByVal Ziel As Long)
On Error Resume Next
usrProgress.Caption = Titel
With usrProgress.prsProgress
.Min = Start
.Max = Ziel
End With
usrProgress.Show
End Sub


___________________________________________
' diese prozedur innerhalb einer schleife aufrufen


Sub Progress(ByVal Titel As String, ByVal AktuellerWert As Integer)
On Error Resume Next
If Titel  "" Then usrProgress.Caption = Titel
usrProgress.prsProgress = AktuellerWert
End Sub


__________________________________________
' diese prozedur nach beenden des vorganges aufrufen


Sub Ende()
On Error Resume Next
usrProgress.Hide
End Sub


Lieben Gruß Angela

Anzeige
AW: Fortschrittsbalken
10.01.2009 14:13:47
Heinz
Hi,
ok, nochmal ganz langsam.
Wenn keine Schleife läuft, wie es beim normalen Brechnen ist, ist eine dynamische
Fortschrittsanzeige nicht möglich.
mfg heinz
AW: Fortschrittsbalken
10.01.2009 16:27:00
Oberschlumpf
hmmm...Heinz
Siehst du im Sub Test diese Zeile?
For i = 1 To 40000
Dabei handelt es sich doch um eine Schleife, oder?!
Daher verstehe ich dein..."OK...nochmal ganz langsam"
daher an dich meine Bitte:
erst lesen, dann verstehen, dann reagieren
Ich mag Arroganz nicht, wenn sie nicht angebracht ist.
Hallo Angela
Wenn du im Netz schon ne Datei gefunden hast, warum stellst du uns dann nicht genau diese Datei als Datei zur Verfügung, sondern kopierst wieder nur den Code?
Wenn die Datei schon existiert, warum soll dann ich oder wer anders das Rad ein 2. mal erfinden...bzw...die Datei noch mal erstellen?
Ich würd ja gern versuchen, dir zu helfen, aber so geht das nicht.
ich wart mal..vllt kommt die Datei ja doch noch...
Ciao
Thorsten
Anzeige
AW: Fortschrittsbalken
10.01.2009 16:36:19
Heinz
Hi,
was du magst und was nicht, ist mir ziemlich Wurst.
Lies meine anderen Antworten, da ist eine eindeutige Aussage.
mfg Heinz
AW: Fortschrittsbalken
10.01.2009 16:51:53
Oberschlumpf
Hi
Jo..habs (noch mal) alles gelesen und festgestellt....in jeder deiner Antworten steht mit anderen Worten die gleiche Aussage.
Kann es vielleicht sein, dass du viel redest aber nix sagst? :-)
(is nur so ne Frage..grins)
Und eine dynamische Fortschrittsanzeige ist doch möglich, da ja wenigstens eine For/Next-Schleife im Code verwendet wird.
Daher kann nach dem Ende einer Teilberechnung vor dem Start der nächsten Teilberechnung sehr wohl der Fortschritt grafisch dargestellt werden.
(nur Angela könnte ja mal die Bsp-Datei uploaden)
Ciao
Thorsten
Anzeige
AW: Fortschrittsbalken
10.01.2009 18:16:00
Oberschlumpf
Hi Angela
Ich hab jetzt mal ne Datei "nachgebaut" und deinen Code aus deiner ersten Nachricht eigefügt.
Anstelle von mehreren Label-Objekten (wie in deiner Bsp-Datei) habe ich aber stattdessen eine "richtige" Progrssbar (Fortschrittsbalken) verwendet.
Hier meine Idee:
https://www.herber.de/bbs/user/58258.xls
Bin auf deine Antwort neugierig.
Hilfts denn?
Ciao
Thorsten
Anzeige
toll, wirklich SPITZE
10.01.2009 18:42:41
Angela
Hallo Thorsten,
erst mal 1000 Dank, das sieht ja wirKlich toll aus.
Da hast Du ja richtig was auf die Beine gestellt.
Für mich bleibt das Problem des einbinden des Progressbar.
Was nicht geht, habe es gerade versucht als Anfängerin;
Das steht in meinem Tab drin.
*************************************************

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$I$1" Then
Ausland 'Tabelle1
End If
End Sub


**************************************************
Es müßte irgendwie in meinem Makro mit eingebunden werden, oder umgekehrt eben.
So das beide paralell ablaufen können.
Mein Makro rufe ich füer die Berechnungen / Spez.Filter ganz normal über ein Button auf.
Lieben Gruß Angela

Anzeige
AW: toll, wirklich SPITZE
10.01.2009 19:22:52
Oberschlumpf
Hi Angela
Danke fürs Lob.
Aber was deine "richtige" Datei betrifft, werden wir dir nicht helfen können, so lange wir eben genau die Datei nicht sehen können.
Ein Fortschrittsbalken muss immer an jeden Code angepasst werden - und das geht nur, wenn man den Code sehen kann.
Ciao
Thorsten
AW: Fortschrittsbalken
13.01.2009 11:22:35
Lutz
Hallo Torsten,
Deine Lösung gefällt mir sehr gut.
Hast Du vielleicht eine Idee, wenn nachfolgender Code gestartet wird um die Rechengeschwindigkeit zu erhöhen, dass man Deine Lösung trotzdem nutzen kann?
Danke,
Lutz
'=========================================
'Bildschirmaktualisierung während Prozeduren deaktivieren
'=========================================
Option Explicit
Dim AppCalc
Dim AppScreen
Dim AppEvents

Public Sub speed_ein()
With Application
'Exit Sub
'Einstellungen speichern
AppCalc = .Calculation
AppScreen = .ScreenUpdating
AppEvents = .EnableEvents
'Angezogene Bremsen lösen
.Calculation = xlCalculationManual 'Berechnung auf manuell
.ScreenUpdating = False 'Bildschirmaktualisierung aus
.EnableEvents = False 'Ereignismakros abschalten
End With
End Sub


=============
Programmroutine
=============


Public Sub speed_aus()
With Application
'Exit Sub
.Calculation = AppCalc
.ScreenUpdating = AppScreen
.EnableEvents = AppEvents
End With
End Sub


Anzeige
AW: Fortschrittsbalken
13.01.2009 15:12:22
Oberschlumpf
Hi Lutz
Meinst du so:
https://www.herber.de/bbs/user/58343.xls
Hab deine Vor- und Nacheinstellungen vor- und hinter dem eigentlichen Code eingefügt.
Hilfts denn?
Ciao
Thorsten
AW: Fortschrittsbalken
13.01.2009 15:39:52
Lutz
Hallo Oberschlumpf,
danke für den Tip, ich denke, dass ich somit weiter komme.
Lutz
AW: Fortschrittsbalken
10.01.2009 17:11:39
Heinz
Hi,
du liest, ohne den Sinn zu verstehen.
Beim Speichern und Berechnen lässt sich Excel nicht unterbrechen, die Schleife läut erst, wenn
z.B. die Berechnung beendet ist und das ist so ziemlich sinnlos.
mfg heinz
AW: Fortschrittsbalken
10.01.2009 13:57:00
Hajo_Zi
Hallo Angela,
ich habe mal irgendwann einen Code erstellt,vielleicht ist das ein Ansatz für Dich. Grundlage ist eine Schlaeife.
http://hajo-excel.de/chCounter3/getfile.php?id=118

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige