Aktivierreihenfolge im Userform über VBA steuern

26/01/2009 - 14:18 von Anja Renard | Report spam
Hallo,
ich benutze Excel 2003 SP3 und habe ein Problem mit der Aktivierreihenfolge
in einem Userform.
Ich habe eine UserForm1 mit
Textbox1 (TabIndex=0),
Textbox2 (TabIndex=2),
Textbox3 (TabIndex=3),
Commandbutton1 (TabIndex=1, Caption="Weiter")
Commandbutton2 (TabIndex=4, Caption="Ende")


Abhàngig davon, was in Textbox1 eingegeben wird, soll der Fokus
entweder auf Commandbutton1 oder
auf Commandbutton2 oder
weiterhin auf Textbox1 gesetzt werden.


D.h. der Anwender gibt einen Text ein und bestàtigt die Eingabe mit
Return. Abschließend soll der Fokus automatisch auf CommandButton1 oder
CommandButton2 oder Textbox1 gesetzt sein.

Die Aktivierung des Commandbutton1 funktioniert durch die entsprechende
Vergabe der jeweiligen TabIndex-Eigenschaft.
Die Aktivierung der Textbox funktioniert durch den Cancel-Parameter der
Textbox1_Exit-Prozedur.
Aber ich schaffe es nicht, auf den CommandButton2 weiterzuschalten.

Scheinbar klappt es im Textbox-Exit-Ereignis nicht, die
TabIndex-Eigenschaft wirkungsvoll zu setzen bzw. die Setfocus-Methode
auszuführen.

Kann mir das jemand erklàren und hat jemand einen Tipp für die Lösung?

Folgendes ist mein Code:


Sub testformular()
UserForm1.Show
End Sub

Private Sub CommandButton2_Click()
Me.Hide
End Sub

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Me.TextBox1.Value = "weiter" Then
Cancel = False
ElseIf Me.TextBox1.Value = "ende" Then
Cancel = False
Me.CommandButton2.SetFocus
Else
Me.TextBox1.Value = ""
Cancel = True
End If
End Sub
 

Lesen sie die antworten

#1 Andreas Killer
27/01/2009 - 15:16 | Warnen spam
Anja Renard schrieb:

Abhàngig davon, was in Textbox1 eingegeben wird, soll der Fokus
entweder auf Commandbutton1 oder
auf Commandbutton2 oder
weiterhin auf Textbox1 gesetzt werden.


...
Scheinbar klappt es im Textbox-Exit-Ereignis nicht, die
TabIndex-Eigenschaft wirkungsvoll zu setzen bzw. die Setfocus-Methode
auszuführen.


Das ist richtig, im Enter-/Exit-Ereignis funktioniert das nicht.

Kann mir das jemand erklàren und hat jemand einen Tipp für die Lösung?


Erklàren, nein. Ein Tipp:

Wenn es sinnvoll ist, dann verwende das Change-Ereignis um den Focus zu
setzen, das geht. Hat allerdings den Nachteil das Change bei jedem
Tastendruck aufgerufen wird, d.h. es wird schon der Focus wàhrend der
Eingabe gesetzt, BEVOR der User ENTER drückt.

Andreas.

Ähnliche fragen