Bei falscher Eingabe in TextBox springen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
UserForm TextBox MsgBox
Bild

Betrifft: Bei falscher Eingabe in TextBox springen
von: Juli
Geschrieben am: 19.08.2015 12:38:36

Hallo liebe Excels,
Ich hab einige TextBoxen, bei dem nur das Datumsformat erlaubt ist, wie realisiere ich das und vermeide das man bei der Eingabe Fehler macht?
Bzw wie lautet der Code bei einem Fehlerfall, sodass man in die entsprechende TextBox spring, bei dem der Fehler ist?
Viele Grüße
Juli

Bild

Betrifft: AW: Bei falscher Eingabe in TextBox springen
von: Daniel
Geschrieben am: 19.08.2015 13:09:49
Hi
am besten fragst du das schon bei der Eingabe ab, dh im Exit-Event der Textbox (dh wenn der Anwender die Textbox verlassen und auf ein anderes Steuerelemente wechseln will)
hier zu folgender Code im Exit-Event der Textbox:

If not isdate(Textbox1.Text) then 
    msgbox "Bitte Datum eingeben"
    Cancel = True
End if
das Cancel = True bewirkt, dass der Focus auf dieser Textbox bleibt.
Als Datum wir jeder Text anerkannt, welcher sich mit CDate in ein Datum wandeln lässt.
Gruß Daniel

Bild

Betrifft: AW: Bei falscher Eingabe in TextBox springen
von: Juli
Geschrieben am: 19.08.2015 14:24:12
Hallo Daniel,
danke für die schnelle Antwort.
Leider verlässt er mir die UserForm bei falscher Eingabe.
Mein gesamter Code:


    If TextBox1.Value <> "" Then
        If IsDate(TextBox1.Value) Then
             dDatum = CDate(TextBox1.Value)
             
             KW = 4 + dDatum - Weekday(dDatum, 2)
             DIN_KW = (KW - DateSerial(Year(KW), 1, -6)) \ 7
             
             Markiere_KW DIN_KW, Year(dDatum), "1", 4, 3
         ElseIf Not IsDate(TextBox1.Text) Then
            MsgBox "Bitte Datum eingeben"
            Cancel = True
        End If
    End If


Bild

Betrifft: AW: Bei falscher Eingabe in TextBox springen
von: Daniel
Geschrieben am: 19.08.2015 14:39:48
Hi
IsDate kann nur WAHR oder FALSCH sein.
daher den If-Block so aufbauen, denn für das Else wird keine weiter Prüfung benötigt:

If IsDate(TextBox1.Value) Then
    Code wenn Datum
Else
    Code wenn kein Datum
End If
steht der Code auch wirklich im Exit-Event der Textbox?
Gruß Daniel

Bild

Betrifft: AW: Bei falscher Eingabe in TextBox springen
von: JoWE
Geschrieben am: 19.08.2015 14:41:50
Hi,
vllt. so:

Private Sub Textbox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
   Select Case KeyAscii
   Case 48 To 57, 46
   Case Else:
      KeyAscii = 0
      MsgBox "Es sind nur Ziffern erlaubt!", _
      vbInformation, "Hinweis"
   End Select
End Sub

Gruß
Jochen

Bild

Betrifft: AW: Bei falscher Eingabe in TextBox springen
von: Juli
Geschrieben am: 20.08.2015 13:02:30
Vielen Dank Leute,
Ich hab meine Fehler gefunden...Das Problem ist dass ich erst überprüfe ob er mir die richtige Eingabe gemacht hat, wenn ich auf Button "Speichern" gehe. Da der Code unter "Private Sub Speichern_Click()" steht. Kann ich das iwie in eine Funktion stecken, dass ich alle Textboxen von TextBox1 bis TextBox20 kontrolliert ob das richtige eingegeben wurde?
LG

Bild

Betrifft: Hilfe zur Selbsthilfe
von: Michael
Geschrieben am: 21.08.2015 16:03:34
Hi Juli,
das mit dem Textbox_KeyPress funktioniert ja prinzipiell wunderbar, wobei im Forum ausgefuchste Varianten vorhanden sind (wenn man sie denn findet).
Das mit "mehreren Textboxen gleichzeitig" geht nicht so ohne Weiteres, laut
http://www.office-loesung.de/ftopic547777_0_0_asc.php
nicht ohne "Klassen-Programmierung", aber Rudi hat hier
https://www.herber.de/forum/archiv/1248to1252/1249600_Keypress_Ereignis.html
einen recht handlichen Vorschlag gemacht.
Hier noch ein paar Varianten: http://schmidt-net.de/files/30001.htm
Und hier passend für Datum: http://www.ms-office-forum.net/forum/showthread.php?t=252028
Schöne Grüße,
Michael

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Bei falscher Eingabe in TextBox springen"