Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1764to1768
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Userform anpassen

Userform anpassen
19.06.2020 21:51:22
Stephan
Hallo
habe eine Userform (siehe Beispiel), die durch Drücken auf den großen Pfeil in Tabelle1 ausgelöst wird.
https://www.herber.de/bbs/user/138442.xlsm
Mit "Übernehmen" wird der in Textbox1 eingetragene Text in die aktive Zelle im Blatt übertragen.
So weit so gut.
Wenn man in die Listbox klickt, wird der gewählte Eintrag in die Texbox übertragen, auch wenn man dort mit den Pfeiltasten auf und ab fährt.
Kann man das so einstellen, dass der Anwender von Beginn weg, also ohne erst hineinklicken zu müssen, mit den Pfeiltasten einen Listbox-Eintrag wählen und
gleichzeitig
auch händisch in die Textbox was schreiben kann? Sobald eien Pfeiltaste betätigt wird, soll der markierte Listbox-Eintrag den textbox-Eintrag überschreiben.
Könnt Ihr mir bitte an meinem Beispiel zeigen, wie man das löst?
Gruß,
Stephan

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userform anpassen
19.06.2020 21:59:22
Felix
Hallo Stephan
mit

Listbox1.SetFocus
in der Initialisierung kann man von beginn an mit Pfeiltasten auswählen. Zum schreiben mit Buchstaben brauchst du ein keydown ereignis, dass dann das Textfeld auswählt. zb
Private Sub Listbox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
TextBox1.SetFocus
End Sub

LG Felix
AW: Userform anpassen
20.06.2020 08:31:43
Stephan
Danke Felix, für Deine Antwort. Aber das funktioniert nicht so, wie ich wollte. Man kann damit nur einmal rauf oder runter drücken, wenn man in der Listbox steht.
Der User soll in der Textbox schreiben und in der Listbox rauf und runter fahren können, ohne mit der Maus hin- und herwechseln zu müssen.
Gruß,
Stephan
Anzeige
AW: versuch mal das
20.06.2020 12:25:07
ralf_b
ich sehe nur die Möglichkeit das du entweder die Textbox als Suchfeld nutzt und den gefundenen Wert dahin übertragen bekommst oder den Wert mittels Listboxscrollen in die Textbox bringst. Die Events lassen einen Mischmasch so ohne weiteres nicht zu.
Im inintialize der Form solltest du gleich
den ersten Listenwert Listbox1.Listindex = 0 setzen und den auch in die Textbox schreiben
Textbox1 = Listbox1
im Listbox1_change Ereignis kannst du dann auch den Listeneintrag in die Textbox schreiben. aber dann geht ein Suchen mit Teilausdrücken nicht mehr.
Anzeige
Ändere die Aktivierreihenfolge ...
20.06.2020 10:07:57
Matthias
Hallo
Zitat:
Kann man das so einstellen, dass der Anwender von Beginn weg, also ohne erst hineinklicken zu müssen, mit den Pfeiltasten einen Listbox-Eintrag wählen und
Ändere die Aktivierreihenfolge und setz die Listbox an die erste Stelle (also vor die TextBox)
Dann kannst Du nach dem Laden des UserForm sofort mit den Pfeiltasten arbeiten.
Gruß Matthias
AW: Userform anpassen
20.06.2020 20:03:56
Stephan
Hallo an alle,
es ist nicht leicht, zu bekommen, was man sich vorstellt, wenn man es nicht richtig erklären kann. Sorry, ich bemühe mich nochmals und gehe dann auf Eure Beiträge ein.
Gegeben: Wie in meinem Beispiel in ersten Beitrag zu sehen ist, wird nach Schließen der UF mit dem Button der Inhalt Textbox1 in die Variable "Wortwahl" übertragen, was dann in die Selection übertragen wird. Interessanterweise geht der Button mit Enter drücken immer, egal wo der Fokus ist. Und das, obwohl da auch ein zweiter Button ist, der sogar einen kleinere Tabindex hat.
Wenn die UF aufgeht, soll der Cursor in der Textbox sein. Man soll nun was eintippen können und mit den Pfeiltasten in der Listbox1 herumfahren können. Für diesen Fall soll die blau markierte Zeile der Listbox1 die Textbox1 überschreiben (und nicht anhängen), woran man dann weiter schreiben kann, weil der Cursor weiterhin in der Textbox ist.
Vielleicht geht das so, indem Textbox immer im Fokus ist und bei Pfeil auf oder ab die Markierung in der Liste auf pder ab wandert und dann der Cursor gleich wieder in die Textbox zurück kehrt. Und dafür bitte ich Euch um einem Lösung.
Eure Antworten in Ehren, ich habe sie mir angesehen.
Felix' Lösung sieht die Pfeilauf-ab-Option nicht vor.
ralf_b: Mit einer kleinen Änderung ("Wortwahl = ListBox1") im Sub buttonOK_Click() geht das Makro so, wie Du es wolltest, allerdings sieht es keine manuelle Eingabe im Textfeld vor, und ist deshalb für mich nicht einsetzbar.
onur: Kann man die Combobox dazu bringen, dass sie gleich ihre Schätze zeigt und nicht erst, wenn man den Pfeil rechts drückt? Das ist nämlich ein Grund, warum ich diese Lösung derzeit nicht erwäge.
Matthias L: Du brücksichtigst und zitierst nur den ersten Teil meines Satzes. Spannend wird es erst mit dem folgenden Wort "glecihzeitig". Das ist wesentlich bei meinem Problem.
LG, Stephan
Anzeige
AW: Userform anpassen
20.06.2020 21:21:58
ralf_b
schau mal das an. Aber ich befürchte das Microsoft dein Anliegen im Event und Keyhandling nicht berücksichtigt hat. Die Textbox habe über die Listbox gesetzt, weil sonst immer der Ok Button angesprungen wird beim Pfeil runter.
https://www.herber.de/bbs/user/138453.xlsm
AW: Userform anpassen
20.06.2020 22:46:58
Daniel
Hi Ralf
guter Ansatz, aber noch etwas umständlich programmiert.
wenn man die verschiedenen Events sinnvoll einsetzt, lässt sich der Code vereinfachen und es funktioniert auch wie gewüscht:
Private Sub buttonLeeren_Click()
TextBox1 = ""
TextBox1.SetFocus
ListBox1.ListIndex = -1
End Sub
Private Sub ListBox1_Click()
If ListBox1.ListIndex >= 0 Then TextBox1.Text = ListBox1.Text
TextBox1.SetFocus
End Sub
Private Sub TextBox1_Keydown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
With ListBox1
Select Case KeyCode
Case 38             'pfeil hoch
If .ListIndex > 0 Then .ListIndex = ListBox1.ListIndex - 1
KeyCode = 0
Case 40              'pfeil runter
If .ListIndex  ListBox1.Text Then ListBox1.ListIndex = -1
End Sub
Private Sub UserForm_Initialize()
ListBox1.AddItem "Apfel"
ListBox1.AddItem "Birne"
ListBox1.AddItem "Bistro"
ListBox1.AddItem "Citrone"
ListBox1.AddItem "Dattel"
TextBox1.SetFocus
End Sub
Private Sub buttonOK_Click()
Wortwahl = Me.TextBox1.Value
Unload Me
End Sub
gruß Daniel
Anzeige
AW: Userform anpassen
20.06.2020 23:28:44
Stephan
Hi
Ralf hat den entscheidenden Hinweis geliefert mit dem Keycode. Doch dann kommt Daniel aus der Deckung mit KeyCode = 0 und einigen wichtigen Details. Das hat dem Problem den Rest gegeben.
Gelöst. Ende.
OK, Felix hat das bereits mit seinem ersten Beitrag auf Keycode hingewiesen, aber damit konnte ich damals (vor 24 Stunden, haha damals) noch nicht viel anfangen.
Danke Euch.
Jetzt noch eine Frage, die mittlerweile untergegangen ist:
Warum reagiert der buttonOK-Button IMMER auf Enter? Also, warum wird immer dieser Button gedrückt, wenn ich die Enter-Taste betätige. Warum nicht der andere Button oder was anderes oder gar nichts? Am Tab-Index liegt es wohl nicht. Und am Fokus auch nicht, weil der ist ja nachweislich auf der textbox1.
LG,
Stephan
Anzeige
AW: Userform anpassen
21.06.2020 08:05:21
Oberschlumpf
Hi,
änder die Eigenschaft des Buttons Default von True auf False.
Ciao
Thorsten
AW: Userform anpassen
22.06.2020 12:37:25
Stephan
Verstanden. Danke, Oberschlumpf Thorsten, auch Dir. Gruß, Stephan
so what, auf die Schnelle gebastelt.
21.06.2020 11:19:54
ralf_b
Weniger Code schreibt sich schneller :-)
21.06.2020 12:23:29
Daniel
AW: nur wenn man weis wie.
21.06.2020 21:50:26
ralf_b
Jetzt weißt du es ja
21.06.2020 23:27:21
Daniel
Zumindest etwas besser als vorher.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige