Hallo Claus,
ich hab mir das auch mal angesehen und bei mir, in meinem alten, dafür aber stabilem Excel funktioniert alles einwandfrei. Ich kann den Fehler überhaupt nicht nachvollziehen. Der Code tut genau das was er soll. Allerdings finde auch ich, dass es viel zu viel Code für so ein einfaches Formular ist. Was willst du mit all den Konstanten und Public Variablen? Viele davon sind überflüssig. Das Formular funktioniert auch mit ca 20% des Codes. Aber seis drum. Ich will dir nix kaputtmachen. Hat sicher 'ne Menge Arbeit gemacht.
Ich kann also nur mutmaßen was du ändern könntest. Klingt für mich so, als ob das Formular oder zumindest die Listbox bei dir den Fokus verliert und nach dem schließen des Unterformulars nicht mehr zurückerhält. Wie gesagt, bei mir gibts keine Probleme. Aber versuche mal am Ende von Set_L_Box_PW die Zeile L_Box_PW.SetFocus hinzuzufügen. Vielleicht bringts was.
Du kannst auch versuchen das Unterformular ungebunden zu öffnen. also mit .Show vbModeless Damit sollte das erste Formular den Fokus behalten.
Drittens würde ich nicht nach jeder Änderung die Listbox clearen und neu füllen. Zumindest nicht wenn es sich verhindern lässt. Es kann durchaus sein, dass dadurch nicht nur der Fokus sondern auch die Grafische Stabilität in Mitleidenschaft gezogen wird; grade bei vielen Einträgen. Du kannst weiter mit .List(.Listindex, Spalte) oder mit .Column(Spalte) arbeiten um den selektierten wert zu ändern. Ich bevorzuge Column da das übersichtlicher ist.
Auch nach Add sollte kein Neubefüllen der Liste notwendig sein. Du kannst mit AddItem jederzeit einen neuen wert hinzufügen. Die Neufüllung benötigt es nur, wenn du danach eine Sortierung vornehmen willst. Derartigen Code hab ich jetzt aber auf die Schnelle nicht gesehen.
Probiers also mal mit Direktanpassung aus und berichte, ob der Fehler dann immer noch auftritt. Ansonsten kannst du nur mal versuchen dein Office zu reparieren, da es offensichtlich instabil läuft.
Mehr fällt mir dazu leider auch nicht ein. Vielleicht helfen dir ja diese Tipps.
Gruß Mr. K.
|