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