Bei falscher eingabe in TextBox bleiben?

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

Betrifft: Bei falscher eingabe in TextBox bleiben? von: Conny
Geschrieben am: 22.03.2005 13:55:09

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

Bild


Betrifft: AW: Bei falscher eingabe in TextBox bleiben? von: marcl
Geschrieben am: 22.03.2005 14:02:11

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


Bild


Betrifft: AW: Bei falscher eingabe in TextBox bleiben? von: Markus
Geschrieben am: 22.03.2005 14:05:55

Hallo zusammen,

kann man anstatt dem Sprung nach weiter nicht gleich GoTo 0 Sagen?

Gruß
Markus


Bild


Betrifft: AW: Bei falscher eingabe in TextBox bleiben? von: Conny
Geschrieben am: 22.03.2005 14:14:25

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


Bild


Betrifft: AW: Bei falscher eingabe in TextBox bleiben? von: Hajo_Zi
Geschrieben am: 22.03.2005 14:08:23

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.




Bild


Betrifft: AW: Bei falscher eingabe in TextBox bleiben? von: Conny
Geschrieben am: 22.03.2005 14:20:41

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



Bild


Betrifft: AW: Bei falscher eingabe in TextBox bleiben? von: Hajo_Zi
Geschrieben am: 22.03.2005 14:22:28

Hallo Conny,

wozu 2x Exit Sub???

Gruß Hajo

Das Forum lebt auch von den Rückmeldungen.


Bild


Betrifft: AW: Bei falscher eingabe in TextBox bleiben? von: Conny
Geschrieben am: 22.03.2005 14:35:33

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



Bild


Betrifft: AW: Bei falscher eingabe in TextBox bleiben? von: Conny
Geschrieben am: 22.03.2005 14:38:40

Eh noch eine Frage kommt, die Zeile

Format (CDate(GP_Datum.Value))

ist auch über.

Vielen dank für die schnelle Hilfe.


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Bei falscher eingabe in TextBox bleiben?"