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

Forumthread: KeyDown,KeyPress Enter Taste und Nur Zahlen

KeyDown,KeyPress Enter Taste und Nur Zahlen
chris
Hallo und guten morgen,
könnt Ihr mir vielleicht helfen ?
Ich habe eine Textbox.In diese dürfen nur zahlen eingegeben werden:
Das Schaffe ich auch so:
Private Sub tb_Identifier_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Chr(KeyAscii) Like "[0-9]" = False Then
KeyAscii = 0
End If
End Sub
Was ich jetzt aber nicht schaffe ist das zusätzlich die Enter Taste abgefangen werden soll.
Das geht nur so:
Private Sub tb_Identifier_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As  _
Integer)
If KeyCode = 13 Then MsgBox ("enter")
End Sub
Wie kann ich beides schaffen ?
Vielen Dank im voraus !
gru? Chris
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: KeyDown,KeyPress Enter Taste und Nur Zahlen
02.05.2011 09:45:12
hary
Hallo Chris
meinst Du es so?

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If Not InStr("0123456789", Chr(KeyCode)) > 0 Then
KeyCode = 0
End If
End Sub

gruss hary
AW: KeyDown,KeyPress Enter Taste und Nur Zahlen
02.05.2011 10:10:36
Tino
Hallo,
meinst Du so?
Private Function TxT_KeyDown(objTextBox As MSForms.TextBox, intKeyCode As Integer) As Integer
Select Case intKeyCode
 Case 96 To 105: TxT_KeyDown = intKeyCode
 Case 13: MsgBox ("enter")
 Case Else: TxT_KeyDown = 0
End Select
End Function

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    KeyCode = TxT_KeyDown(TextBox1, CInt(KeyCode))
End Sub
Gruß Tino
Anzeige
AW: KeyDown,KeyPress Enter Taste und Nur Zahlen
02.05.2011 10:17:37
chris
Danke für eure Hilfe habe es hinbekommen !
gruß Chris
;
Anzeige
Anzeige

Infobox / Tutorial

Eingabe von Zahlen in Excel-Textfeldern mit Enter-Taste abfangen


Schritt-für-Schritt-Anleitung

Um in einem Excel-Textfeld nur die Eingabe von Zahlen zuzulassen und zusätzlich die Enter-Taste abzufangen, kannst Du den folgenden VBA-Code verwenden. Dieser Code kombiniert die KeyPress und KeyDown Ereignisse:

  1. Öffne die Excel-Datei und wechsle in den VBA-Editor (Alt + F11).
  2. Füge ein UserForm oder ein Textfeld (TextBox) in Dein Arbeitsblatt ein.
  3. Klicke mit der rechten Maustaste auf das Textfeld und wähle "Code anzeigen".
  4. Füge den folgenden Code ein:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If Chr(KeyAscii) Like "[0-9]" = False Then
        KeyAscii = 0
    End If
End Sub

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 13 Then MsgBox ("Enter-Taste gedrückt")
End Sub

Dieser Code sorgt dafür, dass nur Zahlen eingegeben werden können und beim Drücken der Enter-Taste eine Nachricht angezeigt wird.


Häufige Fehler und Lösungen

  1. Fehler: Enter-Taste funktioniert nicht

    • Stelle sicher, dass der KeyDown Event korrekt implementiert ist. Der KeyCode sollte mit 13 verglichen werden (vba keycode = 13).
  2. Fehler: Eingabe von Zeichen erlaubt

    • Überprüfe die KeyPress-Methode. Wenn der KeyAscii nicht für Zahlen (0-9) ist, sollte er auf 0 gesetzt werden, um die Eingabe zu verhindern.

Alternative Methoden

Eine alternative Methode, um die Eingabe von Zahlen zu gewährleisten, ist die Verwendung des BeforeUpdate-Events:

Private Sub TextBox1_BeforeUpdate(Cancel As MSForms.ReturnBoolean)
    If Not IsNumeric(TextBox1.Value) Then
        MsgBox "Bitte nur Zahlen eingeben."
        Cancel = True
    End If
End Sub

Diese Methode wird jedoch nicht die Enter-Taste abfangen, sondern lediglich die Eingabe validieren.


Praktische Beispiele

Hier ist ein Beispiel, wie Du die oben genannten Methoden in einer echten Anwendung nutzen kannst:

  • Zahlenvalidierung in einer Rechnungsanwendung: Verwende die KeyPress und KeyDown-Methoden, um sicherzustellen, dass nur Zahlen eingegeben werden, wenn Du Preise oder Mengen in einem Formular eingibst.

  • Formulare zur Dateneingabe: Wenn Du ein Formular zur Eingabe von Kundendaten erstellst, kannst Du sicherstellen, dass nur numerische Werte für Telefonnummern oder Altersangaben akzeptiert werden.


Tipps für Profis

  • Verwendung von KeyCode: Sei dir bewusst, dass verschiedene Tasten unterschiedliche KeyCode-Werte haben. Zum Beispiel ist KeyCode 13 für die Enter-Taste.

  • Fehlerprotokollierung: Implementiere eine Fehlerprotokollierung, um die Eingaben zu verfolgen und um sicherzustellen, dass Du immer erfährst, wenn ungültige Daten eingegeben werden.

  • Benutzerfreundlichkeit: Überlege, dem Benutzer visuelles Feedback zu geben, wenn er ungültige Daten eingibt, z.B. durch Farbänderungen im Textfeld.


FAQ: Häufige Fragen

1. Kann ich auch andere Tasten abfangen? Ja, Du kannst jeden KeyCode abfangen, indem Du den entsprechenden Wert in der KeyDown-Methode prüfst.

2. Wie funktioniert KeyAscii genau? KeyAscii gibt den ASCII-Wert der Taste zurück, die gedrückt wurde. Du kannst ihn verwenden, um zu überprüfen, ob die Eingabe mit den erlaubten Zeichen übereinstimmt.

3. Ist dieser Code mit allen Excel-Versionen kompatibel? Ja, der gezeigte VBA-Code funktioniert in allen gängigen Excel-Versionen, die VBA unterstützen.

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