Hallo Wilhelm
Meine Programme im selbst beigebrachten VBA entstehen für
WORD. Alle cbocbo Enabled=true.TabIndices von 0 bis 6
fortlaufend.
Aha! Da habe ich doch mal gleich in der VBA-Hilfe für Word nachgesehen. Ich bin mir da zwar nicht ganz sicher (hatte selber keine Zeit es zu testen), aber nachdem, was ich da gelesen habe (Cancel: Erforderlich. Ereignisstatus. False zeigt an, dass das Steuerelement das Ereignis verarbeiten soll (Voreinstellung). True zeigt an, dass die Anwendung das Ereignis verarbeitet und der Fokus auf dem aktuellen Steuerelement verbleibt.), könnte folgende Änderung helfen:
Mit dem bereits genannten Code
Sub cbo4_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Anweisungen ausführen
cbo1.SetFocus
Cancel=True 'Anwendung übernimmt die Verarbeitung
End Sub
steigt das Programm nicht aus, sondern wird - offenbar durch
das Exit-Ereignis - veranlaßt, die cbo6 anzuspringen.
Genau das vermute ich auch und zwar, wenn die Verarbeitung des Ereignisses dem Steuerelement überlassen wird (Cancel=false). Ich denke es passierte in deiner alten Variante folgendes.
Der Benutzer möchte das Steuerelement verlassen. Bevor die Aktion ausgeführt wird, fragt das Steuerlelement den Programmierer um Erlaubnis (Exit-Ereignis). Du setzt den Fokus auf das cbo1 und verlässt das Ereignis, wobei du die Verarbeitung dem Steuerelement überlässt (Cancel=False, default-Wert), was dieses dann auch anstandslos macht: Es verschiebt den Fokus auf cbo6.
Probier die ganze Sache mal aus und sag mir bescheid, ob es geklappt hat.
Gern würde ich Deine Anregung aufgreifen und mit einem
cbo4()LostFocus-Ereignis arbeiten; im Drop-down-Feld zur
Prozedur gibt es alle möglichen Ereignisse von AfterUpdate bis
MouseDown, leider kein LostFocus- und ein selbst gezimmertes
Sub cbo()_LostFocus funktioniert nicht.
(Die ganze Sache ist bei Word-VBA wohl etwas anders, als bei VB6.0 oder Access-VBA, mit denen ich hauptsächlich arbeite.)
CU
Markus