Live-Forum - Die aktuellen Beiträge
Datum
Titel
18.04.2024 18:04:29
18.04.2024 16:33:24
Anzeige
Archiv - Navigation
1108to1112
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

Aktualisierung eines Listbox-Objekts erzwingen

Aktualisierung eines Listbox-Objekts erzwingen
Bernd
Hallo,
ich habe in einem Excel-Sheet ein Listboxobjekt erstellt und mit Daten gefüllt. Nach dem Ändern des selektierten Listbox-Elements wird eine _Change Ereignis ausgeführt. Nachdem in diesem Change-Event viele Berechnungen und Einträge in anderen Tabellen gemacht werden, habe ich als erste Anweisung ein Application.ScreenUpdating = False gesetzt.
Am Ende des Change-Event wird Application.ScreenUpdating wieder auf True gesetzt.
Das Problem an der Sache ist, dass die geänderte Auswahl für den Benutzer nicht sichtbar wird. Im Klartext: Die Auswahl/der blaue Balken bleibt beim vorher selektierten Listboxeintrag stehen. Der Bediener denkt also es habe sich nicht geändert. Aktualisiert wird die Listbox erst, wenn nach oben oder unten gescrollt wird.
Vorübergehend habe ich mir also mit einem
ActiveWindow.ActivePane.SmallScroll Down:=1
ActiveWindow.ActivePane.SmallScroll Up:=1
beholfen.
Sieht aber auch doof aus, wenn die Anzeige dann nochmal kurz springt.
Was gibt es sosnt für Möglichkeiten?
AW: Aktualisierung eines Listbox-Objekts erzwingen
21.10.2009 11:17:41
Tino
Hallo,
was willst Du nun erreichen?
Möchtest Du nach Deiner Prozedur die Auswahl in Deiner Listbox aufheben oder eine andere Auswahl treffen?
Während des Click oder Change Ereignis geht dies nicht,
mach es über Application.OnTime und führe die Auswahl nach dem Click oder Change Ereignis aus.
Gruß Tino
AW: Aktualisierung eines Listbox-Objekts erzwingen
21.10.2009 11:31:34
Bernd
Hallo Tino,
nein ich möchte nur, dass die Auswahl richtig angezeigt wird.
Momentan wird wenn ein anderer Eintrag selektiert wird das Change-Event ausgelöst und auch in der abgearbeiteten Prozedur mit dem neu ausgewählten Listeneintrag gearbeitet.
Der blaue Selektionsmarkierungsbalken bleibt aber auf der alten Selektion stehen bis einmal kurz nach oben oder unten gescrollt wird.
Gruß
Bernd
Anzeige
AW: Aktualisierung eines Listbox-Objekts erzwingen
21.10.2009 12:08:04
Tino
Hallo,
wie schon geschrieben, dies geht wärend der Eventprozedur nicht.
Rufe am ende mit ...Ontime eine andere Prozedur auf die dir Die Auswahl setzt.
Hier ein Beispiel.
kommt als Code in Tabelle1
Option Explicit 
 
Dim iAusWahl As Integer 
 
Private Sub ListBox1_Change() 
    iAusWahl = 0 
    Application.OnTime Now + TimeSerial(0, 0, 1), "Tabelle1.SelectAuswahl" 
End Sub 
 
Private Sub SelectAuswahl() 
    ListBox1.ListIndex = iAusWahl 
End Sub 

Eventuell noch das Change- Ereignis noch abfangen das durch die Sub ausgelöst wird.
Gruß Tino
Anzeige
AW: Aktualisierung eines Listbox-Objekts erzwingen
21.10.2009 12:51:42
Bernd
Hallo Tino,
leider funktioniert das Ganze so auch nicht.
Beim Debuggen funktioniert der Aufruf wenn ich einen Haltepunkte in die Sub SelectAuswahl setze. Nachträglich habe ich aber gemerkt, dass es auch ohne den Haltepunkt funktioniert. Nämlich wenn man das Fenster minimiert und wieder maximiert. Dabei wird das Objekt auch neu aufgebaut.
Das alte Problem also.
Bernd
hier ein Beispiel...
21.10.2009 13:03:25
Tino
Hallo,
mehr kann ich nicht für Dich machen.

Die Datei https://www.herber.de/bbs/user/65234.xls wurde aus Datenschutzgründen gelöscht


Ist Dir OnTime zu langsam (min 1 Sekunde), müsstest Du auf die Api zurückgreifen.
Einfach mal bei Google oder hier im Archiv nach SetTimer und KillTimer suchen.
Gruß Tino
Anzeige
AW: hier ein Beispiel...
21.10.2009 13:26:31
Bernd
Hallo Tino,
das Problem tritt in Deinem Beispiel auch nicht auf.
Erst wenn im Change-Event ein
Application.ScreenUpdating = False
Application.ScreenUpdating = True
verwendet wird.
Damit wir nicht weiter aneinender vorbeireden, anbei ein paar Screenshots zur genauen Erläuterung.
https://www.herber.de/bbs/user/65235.zip
Ich bin mir sicher, dass es sich um einen bug von Excel bzw. des Listbox-Objekts handelt. Mir fehlt nur der richtige Workaround.
Danke für die Mithilfe.
Bernd
bei mir gehts auch mit ScreenUpdating
21.10.2009 13:53:37
Tino
Hallo,
warum lädst du nicht die Excel hoch mit der pdf kann ich nichts nachvollziehen.
Auch wenn ich diesen Code um dieses ScreenUpdating erweitere funktioniert es bei mir.
Dim iAusWahl As Integer, booMachNix As Boolean
 
Private Sub ListBox1_Change()
If Not booMachNix Then
 Application.ScreenUpdating = False
    iAusWahl = 0
    Application.OnTime Now + TimeSerial(0, 0, 1), "Tabelle1.SelectAuswahl"
End If
End Sub
 
Private Sub SelectAuswahl()
    booMachNix = True
    ListBox1.ListIndex = iAusWahl
    booMachNix = False
    Application.ScreenUpdating = True
End Sub

Gruß Tino
Anzeige
AW: bei mir gehts auch mit ScreenUpdating
21.10.2009 14:28:12
Bernd
Hier die Datei (habs an dem ohne Ontime eingefügt), wenns bei Dir auch geht liegts definitiv an meiner Version
https://www.herber.de/bbs/user/65236.xls
Ich habe Excel 2002 + SP3 (10.6854.6856).
Was hast Du?
Gruß
Bernd
hast Du nichts verstanden?
21.10.2009 15:33:44
Tino
Hallo,
bei der ohne OnTime geht es nicht habe ich doch schon geschrieben,
dass hat nichts mit ScreenUpdating zu tun.
Gruß Tino

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige