Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

TextBox-Eingabe mit ENTER abschließen

Forumthread: TextBox-Eingabe mit ENTER abschließen

TextBox-Eingabe mit ENTER abschließen
08.02.2019 21:49:36
Jörg
Hallo, ich habe ein, glaube ich, spezielles Problem:
Für die Arbeit in einem Verein müssen einzufrierende Lebensmittel registriert werden. Um mir die Eingabearbeit zu vereinfachen, habe ich mir einen Barcodescanner besorgt. Damit sollen die Daten nun einfach eingescannt werden. Nun simuliert der Scanner eine Tastatureingabe mit abschließendem ENTER. Damit funktioniert die Eingabe in eine normale Excel-Tabelle schon mal hervorragend. Da ich aber eine Tabelle haben möchte, bei der in der ersten Spalte der eingescannte Zahlencode, in der zweiten Spalte das Datum und in der dritten Spalte der (zuvor eingegebene und dem Code zugeordnete) Artikelname stehen soll, möchte ich das Ganze mit einem Formular lösen. An sich eine nicht allzu schwierige Sache.... - Wenn da nicht das Problem mit dem in üblichen Formularen obligatorischen "OK-Button" wäre.
Was ich also brauche, ist folgendes: Eine Textbox, in die ich einen Zahlencode eingeben und am Ende, ohne das Textfeld zu verlassen, mit einem ENTER quittieren kann. Das ist ja der Vorgang, den der Scanner ausführt. Dann erfolgt der Sprung in die Unterroutine zur Verarbeitung der Daten. Das Textfeld sollte nun wieder leer und zur nächsten Scan-Eingabe bereit sein.
KeyPress oder KeyDown helfen mir da nicht wirklich weiter, da hier ja alle Zeichen im Textfeld betroffen sind. Oder gibt's da doch noch 'nen Trick?
Über einen Denkanstoß wäre ich Euch wirklich dankbar!!!
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: TextBox-Eingabe mit ENTER abschließen
08.02.2019 22:11:44
Daniel
Hi
über das ENTERKEYBEHAVIOUR einstellen, dass die Textbox beim drücken von ENTER nicht verlassen wird und im KeyDown-Event abfragen, welche Taste gedrückt wurde und bei ENTER dann eben den Textboxinhalt in der gewünschten Stelle speichern und die Textbox leeren.
so sollte es funktionieren.
Gruß Daniel
Anzeige
AW: TextBox-Eingabe mit ENTER abschließen
08.02.2019 22:39:03
Jörg
Super!!!!!
Tausend Dank! Funktoniert jetzt genau wie ichs wollte. Mir Ist noch nicht ganz klar, wie KeyDown und KeyCode genau funktionieren. Aber mit der jetzt lauffähigen Lösung kann ich mich ja mal mtiefer in die Materie einarbeiten.
Also nochmal : Vielen Dank!
AW: TextBox-Eingabe mit ENTER abschließen
08.02.2019 22:49:22
Daniel
Hi
KeyDown/KeyUp: die gedrückte Taste
KeyPress: das übermittelte Zeichen
Gruß Daniel
Anzeige
AW: TextBox-Eingabe mit ENTER abschließen
08.02.2019 23:24:13
onur
Wozu schreibt man Dir eine Antwort, wenn du sie doch nur ignorierst?
;
Anzeige
Anzeige

Infobox / Tutorial

TextBox-Eingabe mit ENTER in VBA optimieren


Schritt-für-Schritt-Anleitung

Um die Eingabe in einer TextBox mit der ENTER-Taste abzuschließen, kannst du folgende Schritte befolgen:

  1. Öffne dein Excel-Dokument und gehe in den VBA-Editor (Alt + F11).

  2. Füge ein UserForm hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeinDokument)" > Einfügen > UserForm.

  3. Füge eine TextBox hinzu: Wähle die TextBox aus der Toolbox und ziehe sie auf das UserForm.

  4. Öffne das Code-Fenster des UserForms, indem du auf das UserForm doppelklickst.

  5. Füge den folgenden Code in das Code-Fenster ein:

    Private Sub TextBox1_KeyDown(KeyCode As MSForms.ReturnInteger, Shift As Integer)
        If KeyCode = vbKeyReturn Then ' Wenn ENTER gedrückt wird
            ' Hier kannst du den TextBox-Inhalt verarbeiten
            ' Beispiel: Speichern in Zelle A1
            Sheets("Tabelle1").Range("A1").Value = TextBox1.Text
            TextBox1.Text = "" ' TextBox leeren
            KeyCode = 0 ' Verhindere das Verlassen der TextBox
        End If
    End Sub
  6. Schließe den VBA-Editor und teste dein UserForm, indem du es startest.


Häufige Fehler und Lösungen

  • TextBox wird nicht geleert: Stelle sicher, dass der Code TextBox1.Text = "" am Ende der KeyDown-Routine steht.
  • Keine Reaktion auf ENTER: Überprüfe, ob das KeyDown-Ereignis korrekt zugewiesen ist und ob der Code keine Syntaxfehler enthält.
  • TextBox verlässt sich nach ENTER: Achte darauf, dass KeyCode = 0 gesetzt wird, um das Verlassen der TextBox zu verhindern.

Alternative Methoden

Falls du eine andere Methode bevorzugst, kannst du auch das KeyPress-Ereignis verwenden. Beachte jedoch, dass dies nur das Zeichen erfasst und nicht den Tastendruck. Hier ein Beispiel:

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If KeyAscii = vbKeyReturn Then
        ' Verarbeitung hier
        TextBox1.Text = ""
        KeyAscii = 0 ' Verhindere das Verlassen der TextBox
    End If
End Sub

Diese Methode könnte weniger flexibel sein, da sie nicht zwischen verschiedenen Tasten unterscheiden kann.


Praktische Beispiele

Hier sind einige Beispiele, wie du das vba textbox enter Event nutzen kannst:

  1. Speichern in verschiedenen Zellen:

    Private Sub TextBox1_KeyDown(KeyCode As MSForms.ReturnInteger, Shift As Integer)
        If KeyCode = vbKeyReturn Then
            Dim nextRow As Long
            nextRow = Sheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row + 1
            Sheets("Tabelle1").Cells(nextRow, 1).Value = TextBox1.Text
            TextBox1.Text = ""
            KeyCode = 0
        End If
    End Sub
  2. Zusätzliches Datum speichern:

    Private Sub TextBox1_KeyDown(KeyCode As MSForms.ReturnInteger, Shift As Integer)
        If KeyCode = vbKeyReturn Then
            Dim nextRow As Long
            nextRow = Sheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row + 1
            Sheets("Tabelle1").Cells(nextRow, 1).Value = TextBox1.Text
            Sheets("Tabelle1").Cells(nextRow, 2).Value = Now 'aktuelles Datum
            TextBox1.Text = ""
            KeyCode = 0
        End If
    End Sub

Tipps für Profis

  • Benutze KeyDown statt KeyPress: Damit kannst du spezifische Tasten wie ENTER abfragen, was die Verarbeitung vereinfacht.
  • Debugging: Nutze Debug.Print innerhalb der Ereignisprozeduren, um den Status und die Variablen während der Ausführung zu überprüfen.
  • Erweiterungen einbauen: Überlege, zusätzliche Felder für weitere Daten zu erstellen und diese ebenfalls zu verarbeiten.

FAQ: Häufige Fragen

1. Kann ich mehrere TextBoxen gleichzeitig verwenden?
Ja, du kannst den gleichen Code für mehrere TextBoxen verwenden, achte jedoch darauf, dass du die jeweiligen TextBox-Namen anpasst.

2. Was ist der Unterschied zwischen KeyDown und KeyPress?
KeyDown erfasst den Tastendruck und kann spezielle Tasten wie ENTER erkennen, während KeyPress das eingegebene Zeichen behandelt und für die Verarbeitung von Zeichen gedacht ist.

3. Muss ich etwas Besonderes beachten, wenn ich mit einem Barcodescanner arbeite?
Überprüfe, ob der Scanner das ENTER-Signal korrekt sendet, da dies für die Funktionalität des vba keydown enter entscheidend ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige