Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Listbox: Anzeige von bearbeitetem Item funktioniert nicht

Forumthread: Listbox: Anzeige von bearbeitetem Item funktioniert nicht

Listbox: Anzeige von bearbeitetem Item funktioniert nicht
27.07.2024 09:44:50
yogi
Hallo allerseits

in einer Listbox können mehrere Items angewählt werden. Die werden dann so abgearbeitet:


Application.ScreenUpdating = False
with frm_start
For datei_nummer = 0 To .lbx_dateien.ListCount - 1
If .lbx_dateien.Selected(datei_nummer) = True Then
zu_bearbeitende_datei= .lbx_dateien.List(datei_nummer)
Call sub_a(zu_bearbeitende_datei)
Call sub_b(zu_bearbeitende_datei)
'
' entferne Häckchen
'
Application.ScreenUpdating = True
.lbx_dateien.Selected(datei_nummer) = False
Application.ScreenUpdating = False
End If ' .lbx_dateien.Selected(datei_nummer) = True
Next ' datei_nummer = 0 To .lbx_dateien.ListCount - 1
End With


Das funktioniert leider nicht, die Häckchen werden zwar gelöscht, das Löschen der Häckchen wird nicht angezeigt.
Erst wenn nach der Zeile
       .lbx_dateien.Selected(datei_nummer) = False

zusätzlich die Zeile
DoEvents

eingefügt wird, ist die Löschung des jeweiligen Häckchens sichtbar.
Leider hat das zur Folge, dass das Program wesentlich länger läuft. Bei drei Einträgen ohne DoEvents sind es 3 Sekunden, mit DoEvents 12 Seknden. Nicht alle Welt, aber es könnten im Extremfall über hundert Einträge sein.
Gibt es da eine andere Möglichkeit als DoEvents um die Löschungen anzuzeigen?

Gruss
yogi
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox: Anzeige von bearbeitetem Item funktioniert nicht
27.07.2024 10:07:40
RPP63
Moin!
Was passiert bei folgendem?
Me.Repaint

Gruß Ralf
AW: Listbox: Anzeige von bearbeitetem Item funktioniert nicht
27.07.2024 12:53:58
Onur
Kein Wunder, denn du hast ja auch das hier (offenbar ohne zu wissen, wozu) am Anfang stehen:

Application.ScreenUpdating = False
Listbox: Anzeige von bearbeitetem Item
27.07.2024 15:33:55
yogi
Hallo Onur

doch, habe ich, aus guten Gründen.
Und wenn du den Code genau anschaust, siehst du, dass vor dem Löschen des Häckchens
        Application.ScreenUpdating = True


steht.
Anzeige
AW: Listbox: Anzeige von bearbeitetem Item
27.07.2024 16:41:42
Onur
Bringt aber nicht viel, wenn du es 1 Mikrorosekunde später wieder ausschaltest, so schnell kann das Bildschirm nicht aktualisiert werden, erst Recht nicht in einer Schleife ohne DoEvents.
Lass das mal weg uns staune, was passiert.
Application.ScreenUpdating = False

lohnt sich nur, wenn Tausende Zellen verändert werden müssen.
Anzeige
Listbox: Anzeige von bearbeitetem Item funktioniert nicht
27.07.2024 17:10:42
yogi
Die zu bearbeitenden Datein können bis 1 MB gross und einige Tausend Zeilen umfassen. Die angegeben Zeiten rühren von kleinen Testdateien her. Ohne Application.ScreenUpdating = False gibt es auf dem Bildschirm ein wahres Geflackere.
AW: Listbox: Anzeige von bearbeitetem Item funktioniert nicht
27.07.2024 17:25:07
Onur
Ist mir schon klar - worauf ich hinaus war, ist, dass du dich nicht drüber wundern darfst, wenn du Bildschirmaktualisierung ausgeschaltet hast, und nicht. mit dir herumzudiskutieren.
Wie du schon selbst sagtest: wenn du DoEvents einbaust, wird der Code langsamer - Warum wohl? Weil Excel erstmal all die Zellen aktualisieren und die Häkchen setzen muss.
Mein Verdacht war, dass du irgendwo gelesen hast, dass man immer am Anfang des Codes Screenupdating auf false setzt, damit er schneller wird.
Manche Leute glauben nämlich, dass das und andere solcher Zeilen (z.B. Berechnungen und Events ausschalten) würde JEDEN Code beschleunigen - und das ist Blödsinn.
Du solltest
Application.ScreenUpdating = True

auch mal vor "End Sub" schreiben, da sie sonst ausgeschaltet beleibt, wenn der Code beendet ist.
Anzeige
ScreenUpdating
27.07.2024 19:14:07
RPP63
Zwei Sachen:
• ScreenUpdating braucht man idR nur dann auszuschalten, wenn einzelne Zellmanipulationen seriell vorgenommen werden.
Um Tipps zu geben, müsste man den Code kennen.
• Man braucht ScreenUpdating (entgegen der VBA-Hilfe) am Ende nicht wieder einzuschalten!
Wäre ja ansonsten auch höchst problematisch!
Ein simples Application.ScreenUpdating = False → Enter im Direktbereich würde Excel unbenutzbar machen …
Anzeige
AW: ScreenUpdating
27.07.2024 20:07:56
Onur
Hallo Ralf,

Du hast zu meinem Erstaunen Recht (Ich könnte schwören, dass es früher anders war - welche Version hast Du?) -aber ScreenUpdating wird nicht automatisch beim Verlassen der Sub(s) eingeschaltet, sondern erst bei Unterbrechung oder Beenden sämtlicher Codes.

"Ein simples Application.ScreenUpdating = False → Enter im Direktbereich würde Excel unbenutzbar machen" … Genauso, wie es Application.EnableEvents = False schon tut.


Gruß
Onur
Anzeige
AW: ScreenUpdating
27.07.2024 20:32:50
RPP63
Moin Onur!
Bzgl. .ScreenUpdating:
Das Verhalten war schon immer so, seit es VBA gibt.
Genau so lange existiert aber der Fehler (besser die Falschaussage) in der VBA-Hilfe.
Ich erinnere mich, deswegen schon häufig der Blödheit bezichtigt worden zu sein.
Frei nach dem Motto: "RTFM", also read the fucking manual (mit Verweis auf die VBA-Hilfeseite).
Gleiches gilt übrigens für viele Eigenschaften, die nur temporär zur Laufzeit gesetzt werden und nicht "resettet" werden müssen.
Beispiel:
Application.PrintCommunication = False

?Application.PrintCommunication
Wahr


Und ja, .EnableEvents ist ein "Sonderfall".
Für mich einzige Erklärung:
Das Parent ist hier ja eher VBA und nicht die Application
Jedenfalls ist dieses Verhalten für mich nicht stringent.

Gruß Ralf
Anzeige
Listbox: Anzeige von bearbeitetem Item
27.07.2024 10:10:33
yogi
Da staunt der Laie und der Fachmann wundert sich!!!
Funktioniert bestens
Danke
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige