Hallo,
ich habe in einer VBA-Applikation unter Excel ein Formular, das eine Listbox enthält. In dieser Listbox sind immer 18 Einträge aufgeführt, von denen aber in Abhängigkeit von einer Variablen nur bestimmte Zeilen ausgewählt werden können. Das zumindest ist das Ziel. Die blöde Listbox hat aber eine eigene Meinung dazu:
Nachdem ich Schwierigkeiten mit dem Change-Ereignis der Listbox hatte (wurde immer viermal ausgeführt, keine Ahnung, wo die letzten drei Trigger herkommen), bin ich auf KeyUp und MouseUp umgestiegen. Von da aus rufe ich jeweils eine Sub auf, in der die besagte Variable geprüft wird. Sollte sie einen bestimmten Wert haben, wird der Listindex der Listbox fest auf 11 bzw. 12 eingestellt. Das wird auch ausgeführt - wenn ich im Einzelschritt durchgehe, kann ich das in der Listbox beobachten, und auch der Listindex wird entsprechend zurückgegeben.
Das Problem ist nun: Sowie die Ereignis-Routine für KeyUp bzw. MouseUp verlassen wird, springt der Curser der Listbox auf den alten Wert zurück. Meine Änderung wird also einfach wieder verworfen.
Das passiert nicht, wenn ich den Listindex „von außen“ ändere, also z.B. über einen Button-Klick. Das funktioniert wunderbar. Ich bekomme aber meinen Trigger nun einmal nur über die Änderung der Listbox. Hat jemand eine Idee, wie ich dieses störrische Verhalten der Listbox umgehen kann und zu einer bleibenden Änderung komme?
Danke!
Kristian