Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1548to1552
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

Fortschritt von Schleife in Zelle schreiben

Fortschritt von Schleife in Zelle schreiben
06.04.2017 11:57:19
Schleife
Hallo,
ich habe eine For-Schleife bei der für jede Zeile bestimmte Kriterien abgefragt werden, und je nach Ausgangsstand wird ein anderer Text in der dazugehörenden Zelle "Status" angezeigt. Das funktioniert auch alles prima. Problem ist nur, dass das ganze etwas lange dauert für 300 Zeilen.
Die Dauer ist noch verkraftbar, aber der User weis nicht, wie weit die Schleife fortgeschritten ist und verzweifelt am Bildschirm.
Meine Idee ist nun bei jedem Schleifengang in die Zelle J8 (im Tabellenkopf) zu schreiben cells(8,10)="aktualisiert Status " & intRow2 & " von 300".
intRow2 ist der Zähler in der For-Schleife.
mir wird auch die gewünschte Meldung angezeigt, allerdings bleibt sie auf "aktualisiert Status 1 von 300", die Variable steigt nicht mit. (Und ja ScreenUpdating ist an)
Schalte ich jedoch eine MsgBox dazwischen (sprich, ich muss nach jedem Schleifengang klicken), so funktioniert dies.
Hoffe ich habe es verständlich erklärt. Wo liegt mein Fehler?
Hier noch der Code:
Sub Statusabfrage()
Dim intRow As Integer
Dim intRow2 As Integer
Application.ScreenUpdating = True
'starte eine Schleife pro Zeile von Zeile 12 bis Zeile 300
For intRow = 12 To 20
'führe für jeden Schleifengang 2 Fallabfragen durch und setze StatusStart und StatusEnd  _
entsprechend
intRow2 = intRow - 11
Cells(8, 10) = "aktualisiert Status " & intRow2 & " von 300"
MsgBox ("Status " & intRow2)
'... jetzt kommt die Schleifen-Anweisung...
'nächster Schleifengang für die nächste Zeile
Next intRow
Cells(8, 10) = ""
End Sub

Gruß,
Kevin

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

Betreff
Datum
Anwender
Anzeige
AW: Fortschritt von Schleife in Zelle schreiben
06.04.2017 12:08:12
Schleife
Hallo Kevin
Der Code ist einfach zu schnell durch.
Wenn Du statt der MsGBox das hier benutzt, siehst Du es auch.
Application.Wait Now + TimeSerial(0, 0, 1)
Hat aber den Nachteil das Du nach jeder Schleife 1 Sek Zeit verschenkst ;-)
Gruß Matthias
AW: Fortschritt von Schleife in Zelle schreiben
06.04.2017 12:13:12
Schleife
Hi
was immer du vorhast, bei 300 Zeilen sollte bei vernünftiger Programmierung keine Fortschrittsanzeige notwendig sein.
und wenn man es braucht, ist es eine schlechte Idee, das ganze in eine Zelle zu schreiben, denn das verlangsamt den Vorgang zusätzlich.
ganz Praktikabel ist für sowas die Statusleiste, wenn man es unbedingt haben will.
dort kann man eigene Texte absetzen; z.B. sowas wie:
for intRow = 12 to 300
Application.Statusbar = "In Bearbeitung: Zeile " & intRow - 11 & " von 300"
Next
Application.Statusbar = false

das Application.Statusbar = False gibt die Statusleiste wieder für die üblichen Excel-Systemmeldungen frei (z.B. zeigt Excel auch genau dort bei längeren Berechnungen eine Fortschrittsleiste an).
Gruß Daniel
Anzeige
AW: Fortschritt von Schleife in Zelle schreiben
06.04.2017 13:07:23
Schleife
Hallo Daniel und Matthias,
Beide Varianten funktionieren wunderbar. Danke euch beiden.
Hab jetzt Matthias Lösung genommen. Die Zeit hab ich aber auf 0.01 Sekunden verkürzt. Auch wenn Daniels Vorschlag professioneller ist, der Text in der Zelle fällt dem User halt sofort ins Auge und er flucht nicht über diese "blöden Controller mit ihren unsäglichen Excel-Tabellen" ;)
Danke und Gruß,
Kevin

327 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige