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

Forumthread: Beim Verlassen einer Textbox Inhalt prüfen

Beim Verlassen einer Textbox Inhalt prüfen
03.08.2019 10:00:11
Urs
Hallo Forum
Ich habe in einer Userform eine Textbox, die ich beim Verlassen (Exit) auf eine numerische Eingabe überprüfen möchte.
Ich habe dazu folgenden Code geschrieben:

Private Sub txtZlgBetrag_01_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsNumeric(txtZlgBetrag_01.Value) Then
MsgBox "Sie müssen einen Betrag eingeben!", vbExclamation, "Betrag fehlt"
txtZlgBetrag_01.SelStart = 0
txtZlgBetrag_01.SelLength = Len(txtZlgBetrag_01)
Cancel = True
End If
End Sub

Die Fehlermeldung (MsgBox) erscheint zwar bei fehlerhafter Eingabe, aber der Focus bleibt nicht in der Textbox!
Wenn ich den gleichen Code ohne Msgbox laufen lasse, funktioniert es aber einwandfrei.
Der Focus bleibt dann im Feld und der Inhalt wird wie gewünscht markiert.
Warum geht das nicht mit der MessageBox?
Vielen Dank im voraus.
Urs
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Beim Verlassen einer Textbox Inhalt prüfen
03.08.2019 10:09:11
Hajo_Zi
Hallo Urs,
warum nicht gleich die Eingabe prüfen?
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'   Ansatz VB 6 Buch von Peter Monadjemi
'   nur Zahlen und ein Komma
Select Case KeyAscii
Case Asc("0") To Asc("9")
End Select
end Sub

Das ist Live, ich baue keine Datei nach.

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
Anzeige
AW: Beim Verlassen einer Textbox Inhalt prüfen
03.08.2019 11:14:43
Luschi
Hallo Hajo,
wenn Du das Komma schon überprüfen willst, dann so:

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'   nur Ziffern und ein Komma
Select Case KeyAscii
Case Asc("0") To Asc("9")
Case Asc(",")
If InStr(1, Me.TextBox1.Text, ",", vbTextCompare) > 0 Then KeyAscii = 0
Case Else
KeyAscii = 0
End Select
End Sub
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Beim Verlassen einer Textbox Inhalt prüfen
03.08.2019 10:15:31
onur
Keine Ahnung, was dein restlicher Code noch Alles macht.
Der Code läuft einwandfrei.
AW: Beim Verlassen einer Textbox Inhalt prüfen
03.08.2019 12:43:07
Urs
Vielen Dank Hajo und Luschi
Das ist super!
Urs
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Inhalt prüfen beim Verlassen einer Textbox in Excel


Schritt-für-Schritt-Anleitung

Um den Inhalt einer Textbox in einer Userform in Excel VBA zu überprüfen, wenn der Benutzer das Feld verlässt, kannst du den folgenden Code verwenden. Dieser stellt sicher, dass nur numerische Eingaben akzeptiert werden.

  1. Öffne deine Userform im VBA-Editor.
  2. Wähle die Textbox aus, die du überprüfen möchtest.
  3. Füge den folgenden Code in das Codefenster der Userform ein:
Private Sub txtZlgBetrag_01_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If Not IsNumeric(txtZlgBetrag_01.Value) Then
        MsgBox "Sie müssen einen Betrag eingeben!", vbExclamation, "Betrag fehlt"
        txtZlgBetrag_01.SelStart = 0
        txtZlgBetrag_01.SelLength = Len(txtZlgBetrag_01)
        Cancel = True
    End If
End Sub
  1. Teste die Userform, indem du die Textbox verlässt. Wenn die Eingabe nicht numerisch ist, erscheint eine Fehlermeldung, und der Fokus bleibt in der Textbox.

Häufige Fehler und Lösungen

  1. Fehler: Fokus verlässt die Textbox trotz MsgBox

    • Lösung: Wenn der Fokus die Textbox verlässt, nachdem die MsgBox angezeigt wurde, könnte es daran liegen, dass die Cancel-Eigenschaft nicht korrekt gesetzt ist. Stelle sicher, dass Cancel = True gesetzt wird, um das Verlassen der Textbox zu verhindern.
  2. Fehler: Eingabe wird nicht als numerisch erkannt

    • Lösung: Überprüfe, ob die Eingabe tatsächlich numerisch ist. Du kannst IsNumeric verwenden, um sicherzustellen, dass nur Zahlen oder Zahlen mit Komma akzeptiert werden.

Alternative Methoden

Eine alternative Methode zur Validierung der Eingabe in Echtzeit ist die Verwendung des KeyPress-Events. Hier ist ein Beispiel, wie du nur numerische Eingaben und ein Komma zulassen kannst:

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
        Case Asc("0") To Asc("9"), Asc(",")
            ' Erlaubte Eingaben
        Case Else
            KeyAscii = 0 ' Verhindere unerlaubte Eingaben
    End Select
End Sub

Diese Methode prüft die Eingabe sofort, während der Benutzer tippt, und verhindert unerlaubte Zeichen.


Praktische Beispiele

Hier sind zwei praktische Beispiele, wie du die Validierung in deiner Userform umsetzen kannst:

  1. Beispiel mit MsgBox:

    • Nutze den ersten Code (Exit-Event), um Fehler beim Verlassen der Textbox anzuzeigen.
  2. Beispiel mit KeyPress:

    • Verwende den zweiten Code (KeyPress-Event), um die Eingabe während des Tippens zu prüfen und unerwünschte Zeichen sofort zu blockieren.

Tipps für Profis

  • Verwende benutzerdefinierte Fehlermeldungen, um dem Benutzer klarere Hinweise zu geben, was falsch ist.
  • Validiere die Eingaben auch beim Speichern, um sicherzustellen, dass die Daten in der Tabelle korrekt sind.
  • Kombiniere beide Methoden, um sowohl während der Eingabe als auch beim Verlassen der Textbox die Validierung durchzuführen.

FAQ: Häufige Fragen

1. Kann ich auch andere Datentypen prüfen? Ja, du kannst IsNumeric für numerische Eingaben verwenden oder IsDate für Datumsangaben. Passe die Validierungslogik entsprechend an.

2. Was passiert, wenn der Benutzer ein Leerzeichen eingibt? Ein Leerzeichen wird als ungültige Eingabe gewertet. Du kannst die Eingabe mit Trim bereinigen, bevor du die Validierung durchführst.

3. Wie kann ich sicherstellen, dass nur positive Zahlen eingegeben werden? Erweitere die Validierung mit einer zusätzlichen Bedingung, die die Zahl prüft, ob sie größer als null ist:

If Not IsNumeric(txtZlgBetrag_01.Value) Or Val(txtZlgBetrag_01.Value) <= 0 Then

Mit diesen Anleitungen und Tipps bist du gut gerüstet, um die Eingaben in Textboxen in Excel VBA effektiv zu überprüfen.

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