Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

[vba] TextBox eingabe für Listenfeld mit Enter bestätigen
#1
Guten Tag,
ich habe gerade folgendes Problem.
Ich habe eine Textbox welche nach betätigen eines Buttons direkt in ein Listenfeld schreibt.
Nun möchte ich die Eingabe anstatt mit einem Button durch drücken der Enter-Taste bestätigen, was mir aber nicht so recht gelingen will.

Mein Code sieht wie folgt aus.

Code:
Option Explicit
Private Sub CommandButton1_Click()
With ListBox1
.ColumnWidths = "1cm;1cm;1cm"
.AddItem TextBox1                   'erste Spalte in Listbox
.List(.ListCount - 1, 1) = TextBox2 'zweite Spalte in Listbox
.List(.ListCount - 1, 2) = TextBox3 'dritte Spalte in Listbox
'---- usw. ----------
End With
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
End Sub
Jedes mal wenn ich versuche eine Eingabe über Enter via
Code:
If KeyCode = vbKeyReturn Then ...
End If
einzufügen, bekomme ich Fehlermeldungen oder es passiert einfach garnichts.
Die Änderung habe ich jetzt nicht direkt in den Code eingefügt da ich gefühlt schon jede Zeile einmal durchprobiert habe um den Befehl einzufügen.

Ich vermute es liegt an der Zeile

Code:
Private Sub CommandButton1_Click()
aber wenn ich versuche dort einen anderen Namen einzutragen bekomme ich auch ständig Fehlermeldungen.
Im Anhang befindet sich noch meine Exceldatei.

Viele Grüße
Tim0


Angehängte Dateien
.xlsm   Listbox.xlsm (Größe: 15,63 KB / Downloads: 6)
Antworten Top
#2
Hallo Tim,

verändere die Aktivierreihenfolge der Elemente in der Userform, das die Textbox3 nach der Textbox2 kommt und teste mal folgenden Code

Code:
Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
   '---- Eigenschaft der Listbox ColumnCount anpassen
   With ListBox1
      .ColumnWidths = "1cm;1cm;1cm" ' Breite fuer hier 3 Spalten entsprechend anpassen
      .AddItem TextBox1                   'erste Spalte in Listbox
      .List(.ListCount - 1, 1) = TextBox2 'zweite Spalte in Listbox
      .List(.ListCount - 1, 2) = TextBox3 'dritte Spalte in Listbox
      '---- usw. ----------
   End With
   TextBox1 = ""
   TextBox2 = ""
   TextBox3 = ""
End Sub
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#3
Vielen Dank!
Funktioniert einwandfrei, hat mich schon ganz verrückt gemacht das Problem. :20:
Wenn möglich, würde ich mich noch über eine kleine Erklärung freuen, wieso das mit diesen Änderungen funktioniert.

Gruß
Timo
Antworten Top
#4
Hallo Timo,

ich habe anstelle des CommandButton_Click-Ereignis das Textbox_Exit-Ereignis verwendet, das ausgeführt wird, wenn Du die Textbox3 verläßt. Den Code selber habe ich unverändert übernommen.

Hattest Du den Versuch mit Enter im Click-Ereignis des Buttons stehen?
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#5
Ok ich habe ein weiteres Problem, wenn ich das ganze auf eine Textbox herunter breche und auch den Sub-Wert auf TextBox 1 ändere reagiert er bereits wenn ich irgendwo hin klicke, er sollte wenn möglich aber ausschließlich auf die Taste "Enter" reagieren.
Mein Fehler, es war nicht was ich oben gefragt hatte, ich hatte bloß angenommen das es keinen Unterschied machen würde ob es eine oder mehrere Textboxen sind.

Hattest Du den Versuch mit Enter im Click-Ereignis des Buttons stehen?
Ja, hatte ich.

Mit deiner Erklärung ergibt es auch Sinn warum er bei einer Textbox nicht explizit auf Enter reagiert. :D
Gruß Timo
Antworten Top
#6
Hallo,

dann versuche es mal mit dem KeyDown-Ereignis und prüfe indem ob die Enter-Taste gedrückt wurde.
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#7
(21.08.2015, 17:15)Steffl schrieb: Hallo,

dann versuche es mal mit dem KeyDown-Ereignis und prüfe indem ob die Enter-Taste gedrückt wurde.

Bekomme eine Fehlermeldung:
"Fehler beim Kompilieren
Die Deklaration der Prozedur entspricht nicht der Beschreibung eines Ereignisses oder einer Prozedur mit demselben Namen"

Code:
Private Sub TextBox1_KeyDown()
 If KeyCode = vbKeyReturn Then
     With ListBox1
       .ColumnWidths = "1cm;1cm;1cm"       ' Breite fuer hier 3 Spalten entsprechend anpassen
       .AddItem TextBox1                   'erste Spalte in Listbox
'.List(.ListCount - 1, 1) = TextBox2 'zweite Spalte in Listbox
'.List(.ListCount - 1, 2) = TextBox3 'dritte Spalte in Listbox
'---- usw. ----------
      End With
         TextBox1 = ""
'TextBox2 = ""
'TextBox3 = ""
End If
End Sub
Antworten Top
#8
Hallo,

das Ereignis hat Rückgabeparameter die Du mit angeben musst.

Code:
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'MsgBox KeyCode
If KeyCode = vbKeyReturn Then
     With ListBox1
       .ColumnWidths = "1cm;1cm;1cm"       ' Breite fuer hier 3 Spalten entsprechend anpassen
       .AddItem TextBox1                   'erste Spalte in Listbox
'.List(.ListCount - 1, 1) = TextBox2 'zweite Spalte in Listbox
'.List(.ListCount - 1, 2) = TextBox3 'dritte Spalte in Listbox
'---- usw. ----------
      End With
         TextBox1 = ""
'TextBox2 = ""
'TextBox3 = ""
End If
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • Tim0
Antworten Top
#9
Danke, es funktioniert nun wie geplant.
Da fehlte mir wohl noch zu viel Grundlagenwissen, aber ich bin ja auch erst ein paar Tage dran. :)

Gruß Timo
Antworten Top
#10
Hallo Timo,

zur Erweiterung deines Grundlagenwissens: Dropdowns in Modulen
Gruß Stefan
Win 10 / Office 2016
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste