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
Anzeige