Focus für Textfeld einer UserForm erzwingen (EX97)

01/08/2008 - 10:05 von Eric March | Report spam
Moin, Moin!

Mich plagt ein làstiges Problem. Vor uns eine simple UserForm. Ein
Label, ein Textfeld (zur Eingabe) und eine (eigentlich überflüssige,
aber unvermeidbare) Schaltflàche.

Über Change- oder Exit-Ereignis (beides mal probiert) werden Eingaben
des Textfelds bedient, heißt, dass schon das Drücken von Enter die
Aktion auslöst und besagte Schaltflàche [OK] eigentlich arbeitslos ist.
Als nàchstes Element in der Tab-Folge (was sich aus gewissen Gründen ja
nicht abstellen làsst) erbt die Schaltflàche den Focus.

Was immer nun im Textfeld (selbst nacktes Enter…) eingegeben wird, es
erzeugt eine Ausgebe - wie wiederum eine bestàtigende Reaktion des Users
abverlangen. OK, den Label könnte ich per KeyUp abràumen, aber ein
hektisches Tastedrücken durch den Laien sollte per z.B. MsgBox schon
eine Art Bremse vorgeschaltet bekommen. (Danach kommt der nàchste User
an die Box und sein Eingebefeld hat keinen Focus. Dumm.)

MessageBoxen wie weitere UserForms als Ausgebe sind also schon sinnvoll;
aber was immer ich treibe, ich muss meine UserForm wàhrenddessen auf
Hide setzen damit mein Text/Eingabefled wieder den Focus erhàlt!
Ein leeres Eingabefeld làsst sich mit Cancel=True noch abbiegen; aber
sowie eine Meldung kommt (was ja Zweck der Eingabe ist) klebt der Focus
auf meiner OK-Schaltflàche. Kein .SetFocus hilt, nur .Hide und .Show
verhelfen meinem Eingabefeld zum Focus.

Wie schaffe ich es, dass mein Eingabefeld seinen Focus wenn nicht behàlt
so doch zurückbekommt ohne die Form mit .Hide & .Show belàstigen zu müssen?


(Verrückter Plan mittlerweile: Im Hintergrund, also Visible=False,
lauern ein großer Label der meine Meldung ausspuckt und eine weitere
Schaltflàche die meine OK-Taste überlagert und dann den Label wie sich
selbst wieder ausblendet. Wie, noch nie so probiert, immer nur
RadioButtons und CheckBoxen gehabt, kriege ich hier den Focus in mein
Textfeld falls er sich nicht von selbst dort einfindet?)

Eric March

Kenne die Vergangenheit. In der Unwissenheit über die Vergangenheit
liegt das Verderben der Zukunft.
"Die Geschichte ist der beste Lehrmeister - mit den unaufmerksamsten
Schülern." Indira Gandhi
 

Lesen sie die antworten

#1 stefan onken
01/08/2008 - 10:41 | Warnen spam
On 1 Aug., 10:05, Eric March <"Eric March"> wrote:
Moin, Moin!

Wie schaffe ich es, dass mein Eingabefeld seinen Focus wenn nicht behàlt
so doch zurückbekommt ohne die Form mit .Hide & .Show belàstigen zu müssen?



hallo Eric,
bei mir (XL03) bleibt mit folgendem Code der Focus in der Textbox,
wenn ich den Button klicke:

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1 = "" Then
MsgBox "eingabe nötig"
Cancel = True
End If
End Sub

Ist das in XL97 (noch) nicht so?

Gruß
stefan

Ähnliche fragen