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

Forumthread: Bei falscher eingabe in TextBox bleiben?

Bei falscher eingabe in TextBox bleiben?
22.03.2005 13:55:09
Conny
Hallo Leute, ich habe folgendes Problem:
ich habe in einem UserForm eine Textbox (GP_Datum)
Hier soll ein Datum eingegeben werden können und überprüft werden ob es ein Sonntag ist, wenn ja, dann wird es in einem Tabellenblatt (Listen) eingefügt und die Liste neu sortiert. Bis hierhin geht auch alles.
Ist es nun aber kein Sonntag oder überhaupt kein Datum, soll eine Fehlermeldung kommen und der Cursor anschließend in der Textbox bleiben, dies tut er aber nicht, sondern er springt in die nächste Textbox im UserForm. Wie kann ich das verhindern?
Gruß Conny

Private Sub GP_Datum_AfterUpdate()
If Weekday(CDate(GP_Datum.Value), vbSunday) = 1 Then
Listen.Cells(GP_von.ListIndex + 39, 2) = CDate(GP_Datum.Value)
Sortiere_nach_Datum
Else
Beep
MsgBox "Das Datum muss ein Sonntag sein!"
GP_Datum.SetFocus
Exit Sub
End If
End Sub

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bei falscher eingabe in TextBox bleiben?
22.03.2005 14:02:11
marcl
Hallo Conny,
eine Möglichkeit wäre so:

Private Sub GP_Datum_AfterUpdate()
weiter:
If Weekday(CDate(GP_Datum.Value), vbSunday) = 1 Then
Listen.Cells(GP_von.ListIndex + 39, 2) = CDate(GP_Datum.Value)
sortiere_nach_datum
Else
Beep
MsgBox "Das Datum muss ein Sonntag sein!"
GP_Datum.SetFocus
GoTo weiter
Exit Sub
End If
End Sub

Ist aber nicht elegant.
Gruß
marcl
Anzeige
AW: Bei falscher eingabe in TextBox bleiben?
22.03.2005 14:05:55
Markus
Hallo zusammen,
kann man anstatt dem Sprung nach weiter nicht gleich GoTo 0 Sagen?
Gruß
Markus
AW: Bei falscher eingabe in TextBox bleiben?
22.03.2005 14:14:25
Conny
Hallo Marcl
Da ich das Datum aber in der TextBox per Hand eingebe, ändert sich nun bis zu nächsten Abfrage nichts und die Fehlermeldung bleibt dauerhaft stehen, ich habe nicht mehr die Möglichkeit das Textfeld zu ändern.
Gruß Conny
Anzeige
AW: Bei falscher eingabe in TextBox bleiben?
22.03.2005 14:08:23
Hajo_Zi
Hallo Conny,

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1 = "" Then
Cancel = True
TextBox1.SetFocus
End If
End Sub

Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Home SP2 und Excel Version 2003 SP1.


Anzeige
AW: Bei falscher eingabe in TextBox bleiben?
22.03.2005 14:20:41
Conny
Vielen Dank Hajo,
habe es nun so geändert und nun gehts.
Danke Conny

Private Sub GP_Datum_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Weekday(CDate(GP_Datum.Value), vbSunday) = 1 Then
Listen.Cells(GP_von.ListIndex + 39, 2) = CDate(GP_Datum.Value)
Sortiere_nach_Datum
Else
Beep
MsgBox "Das Datum muss ein Sonntag sein!"
Cancel = True
GP_Datum.SetFocus
Exit Sub
End If
Exit Sub
End Sub

Anzeige
AW: Bei falscher eingabe in TextBox bleiben?
22.03.2005 14:22:28
Hajo_Zi
Hallo Conny,
wozu 2x Exit Sub?
Gruß Hajo
Das Forum lebt auch von den Rückmeldungen.
AW: Bei falscher eingabe in TextBox bleiben?
22.03.2005 14:35:33
Conny
Hallo Hajo,
das mit den 2x Exit war ein versehen, habe es nun nochmal geändert und nun ist es wie ich es mit vorgestellt habe.

Private Sub GP_Datum_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error GoTo keinDatum
Format (CDate(GP_Datum.Value))
If Weekday(CDate(GP_Datum.Value), vbSunday) = 1 Then
Listen.Cells(GP_von.ListIndex + 39, 2) = CDate(GP_Datum.Value)
Sortiere_nach_Datum
Else
Beep
MsgBox "Das Datum muss ein Sonntag sein!"
Cancel = True
Exit Sub
End If
keinDatum:
Beep
MsgBox "Bitte geben sie ein Datum im Format (TT.MM.JJJJ) ein."
Cancel = True
End Sub

Anzeige
AW: Bei falscher eingabe in TextBox bleiben?
22.03.2005 14:38:40
Conny
Eh noch eine Frage kommt, die Zeile
Format (CDate(GP_Datum.Value))
ist auch über.
Vielen dank für die schnelle Hilfe.
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Falsche Eingabe in TextBox verhindern und Cursor behalten


Schritt-für-Schritt-Anleitung

Um sicherzustellen, dass der Benutzer bei einer falschen Eingabe in der TextBox bleibt, kannst du den folgenden VBA-Code verwenden. Dieser überprüft, ob das eingegebene Datum ein Sonntag ist und bleibt im Textfeld, wenn die Eingabe ungültig ist.

Private Sub GP_Datum_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    On Error GoTo keinDatum
    If Weekday(CDate(GP_Datum.Value), vbSunday) = 1 Then
        Listen.Cells(GP_von.ListIndex + 39, 2) = CDate(GP_Datum.Value)
        Sortiere_nach_Datum
    Else
        Beep
        MsgBox "Das Datum muss ein Sonntag sein!"
        Cancel = True
        Exit Sub
    End If
    Exit Sub
keinDatum:
    Beep
    MsgBox "Bitte geben Sie ein Datum im Format (TT.MM.JJJJ) ein."
    Cancel = True
End Sub

Dieser Code sorgt dafür, dass der Benutzer in der TextBox bleibt, bis ein gültiges Datum eingegeben wird.


Häufige Fehler und Lösungen

  1. Cursor springt zur nächsten TextBox
    Lösung: Stelle sicher, dass Cancel = True gesetzt ist, wenn die Eingabe ungültig ist.

  2. Fehlermeldung bleibt stehen
    Lösung: Verwende On Error GoTo für eine bessere Fehlerbehandlung und um ungültige Datumsformate abzufangen.


Alternative Methoden

Eine weniger elegante, aber funktionierende Methode könnte die Verwendung von GoTo sein. Dies wird jedoch nicht empfohlen, da es den Code schwerer verständlich macht. Hier ist ein Beispiel:

Private Sub GP_Datum_AfterUpdate()
weiter:
    If Weekday(CDate(GP_Datum.Value), vbSunday) = 1 Then
        Listen.Cells(GP_von.ListIndex + 39, 2) = CDate(GP_Datum.Value)
        Sortiere_nach_Datum
    Else
        Beep
        MsgBox "Das Datum muss ein Sonntag sein!"
        GP_Datum.SetFocus
        GoTo weiter
    End If
End Sub

Praktische Beispiele

Der folgende Code prüft, ob ein Datum in der TextBox eingegeben wurde und ob es ein Sonntag ist. Wenn das Datum ungültig ist, wird eine Fehlermeldung angezeigt und der Benutzer bleibt in der TextBox:

Private Sub GP_Datum_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If GP_Datum.Value = "" Then
        Beep
        MsgBox "Bitte geben Sie ein Datum ein."
        Cancel = True
        GP_Datum.SetFocus
    End If
End Sub

Tipps für Profis

  • Fehlerbehandlung verbessern: Nutze On Error GoTo für eine effektive Fehlerbehandlung.
  • Eingabeformat validieren: Du kannst die Eingabeformatierung direkt im Code überprüfen, um sicherzustellen, dass der Benutzer das Datum im richtigen Format eingibt.
  • Benutzerfreundlichkeit: Stelle sicher, dass deine Fehlermeldungen klar und verständlich sind, um Missverständnisse zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass das Datum im richtigen Format eingegeben wird?
Du kannst die Eingabe mit einer If-Bedingung überprüfen, bevor du den Code zur Datumserkennung ausführst.

2. Was passiert, wenn der Benutzer ein ungültiges Datum eingibt?
Die Fehlermeldung wird angezeigt, und der Fokus bleibt in der TextBox, sodass der Benutzer die Eingabe korrigieren kann.

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