Hallo Excel-Guru's,
in einer UserForm (Ufrm) habe ich 4 TextBoxen (tbx1, tbx2, tbx3 und tbx4) und 2 CommandButtons (cbAbbrechen und cbOk).
die tbx2 bis...4 werden bei Initialisierung der UserForm ausgeblenden mit
Private Sub UserForm_Initialize()
Ufrm.tbx2.Visible = False
Ufrm.tbx3.Visible = False
Ufrm.tbx4.Visible = False
End Sub
Nach Eingabe des Benutzers in tbx1 soll die tbx2 wieder eingeblendet werden und der Focus drauf gesetzt werden mit
Private Sub tbx1_AfterUpdate()
Ufrm.tbx2.Visible = True
Ufrm.tbx2.SetFocus
End Sub
Genauso soll es bei Eingabe in die tbx2, ...3 und bei Eingabe in tbx4 soll der CommandButton cbOk den Focus erhalten.
Jedoch wird der Focus auf das CommandButton cbAbbrechen gesetzt.
Die Aktivierreihenfolge ist wiefolgt:
tbx1
tbx2
tbx3
tbx4
cbOk
cbAbbrechen
Weiß jemand bitte Rat?
Ich bedanke mich schon mal im Voraus für Eure Hilfe! :)
Lg, Gustav
...weiß denn niemand Rat? :(
Hallo,
Du musst zuerst den Focus auf das Unterformular setzen, danach auf das Formular
Ufrm.setfocus
cbOk.setfocus
Andreas
Hallo Andreas,
danke für Deine Antwort, aber dieses Problem habe ich in einem Excel-UserForm, da habe ich kein Unterformular ;)
Lg, Gustav
Ach Ufrm heißt bei dir Userform...
Dann sollte einfach ein .setfocus das Problem beheben.
...das habe ich gemacht, doch es funktioniert leider nicht.
Anstatt den .setfocus auf die TextBox (tbx2) zu setzen, wird der Focus auf den CommandButton (cbAbbrechen) gesetzt, der in der Aktivierreihenfolge an letzter Stelle steht.
Zeig mal dein Code
...habe ich bereits, siehe hier:
http://www.access-o-mania.de/forum/index.php?topic=19401.msg106755#msg106755 (http://www.access-o-mania.de/forum/index.php?topic=19401.msg106755#msg106755)
Ich versuche mein Problem nochmals zu erläutern:
In einer Excel-Userform [Ufrm] soll der Benutzer in 4 Texboxen ([tbx1], [tbx2], [tbx3] und [tbx4]) nacheinander Eingaben tätigen.
Darum werden die Textboxen [tbx2], [tbx3] und [tbx4] vorerst (und zwar beim Intialisieren der Excel-Userform Ufrm) ausgeblendet.
Nach Eingabe des Benutzers in die Textbox [tbx1] soll die 2.Textbox [tbx2] eingeblendet werden und der Focus darauf gesetzt werden. Dasselbe soll bei den restlichen Textboxen ebenfalls passieren, wobei bei der 4.Textbox der Focus auf den CommandButton [cbOk)] gesetzt werden soll.
Die Aktivierreihenfolge ist wiefolgt:
[tbx1]
[tbx2]
[tbx3]
[tbx4]
[cbOk]
[cbAbbrechen]
Hoffe die Problemstellung einigermaßen verständlich erläutert zu haben!
Im Zweifelsfall einfach nachfragen ;)
...scheints ist diese Problematik doch nicht so einfach.
Hat niemand 'ne Ahnung?
Hallo,
kannst Du die Excel-Datei mal hier hochladen?
...gerne, bedarf aber noch einiger "Feinarbeit" ;)
Das Problem ist dass die Textfelder unsichtbar sind, und somit keinen Focus erhalten automatisch.
Lösung: mache alle Textfelder sichtbar. Dann benötigst du auch kein SetFocus wenn du die Aktivierungsreihenfolge einstellst.
Gruß Andreas
...ist es denn nicht möglich, nachdem die einzelnen Textfelder wieder sichtbar sind, den Focus darauf zu setzen?
Ich hatte sie vorher alle sichtbar, funktionierte auch einwandfrei, allerdings kam jetzt der Vorschlag, die Textfelder einzeln einzublenden. Seitdem komme ich mit dem .setfocus nicht mehr weiter... :(
Hallo,
also wenn dir das so wichtig ist dann überdecke die Textfelder einfach mit einem Bezeichnungsfeld und im After Update veränderst du größe und höhe des Bezeichnungsfeld.
Ich hab das mal für dich gemacht...
Wow, genial, funktioniert perfekt! DANKEEEEEEEEE Andreas :D
Darf ich Dich fragen, was da genau passiert, ich kann es nicht ganz nachvollziehen?
Hallo,
funktioniert ganz einfach
ein Bezeichnungsfeld "cover1" mit gleichem Hintergrund ohne Rahmen eingefügt und so positioniert dass die Textfelder 2-4 verdeckt werden. Manuell veschoben und Top und Height Werte aufgeschrieben. Top+Height sind zusammen immer 144, und Top-Werte haben eine Schrittweite von 24 bei einem Startwert von 60. In Abhängigkeit des Feldes welches den After update auslöst wird der Top angepasst und die Höhe gesetzt:
Private Sub CoverTxt(ByVal lnum As Long)
Ufrm_Rabatte.cover1.Top = 60 + 24 * (lnum - 1)
Ufrm_Rabatte.cover1.Height = 144 - Ufrm_Rabatte.cover1.Top
End Sub
Beim Start wird CoverTxt 1 ausgeführt, d.h. Top = 60.
Beim letzten Feld wird CoverTxt 4 ausgeführt, d.h. Top = 132, und alle Felder sichtbar.
Gruß Andreas
Vielen Dank Andreas,
großartig, wie Du das gelöst hast!
Nochmals vielen Dank! :D
Gustav