Supportnet / Forum / Tabellenkalkulation
Datumsprüfung in VBA
Frage
Hallo zusammen
in einem Form habe ich diverse Eingabefelder definiert, u.a. ein Datumsfeld. Für die Eingabekontrolle möchte ich einen entsprechenden Code (Afterupdate) eingeben. Ich habe folgendes definiert, stellt mich aber überhaupt nicht zufrieden.
If Not IsDate(Me.txt_dat_test) Then
Exit Sub
End If
Je nach Eingabe startet der Debugger; hat jemand ne bessere Idee?
Danke für ein Feedback.
Gruss Rahel
Antwort 1 von Rahel04
Es muss doch irgendeine Möglichkeit geben, die Eingabe auf ein Datum zu überprüfen. Bitte helft mir.
Danke & Gruss
Rahel
Danke & Gruss
Rahel
Antwort 2 von coros
Hi,
nach was soll den geprüft werden? Ob es sich bei der Eingabe um ein Datumsformat handelt, oder nach einem bestimmten Datum oder nach was?
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
nach was soll den geprüft werden? Ob es sich bei der Eingabe um ein Datumsformat handelt, oder nach einem bestimmten Datum oder nach was?
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 3 von Rahel04
Hallo
gibt der Anwender z.B. 01.01.200 ein, also ohne die 4, startet der Debugger. Wenn ich das Programm verkaufen will, sollte dies nicht passieren...
danke
gibt der Anwender z.B. 01.01.200 ein, also ohne die 4, startet der Debugger. Wenn ich das Programm verkaufen will, sollte dies nicht passieren...
danke
Antwort 4 von coros
Nabend Rahel04,
hier mal ein Code als Lösungsvorschlag. Kopiere den Code in Deine UserForm.
Bei dem Code wird die Datumseingabe überprüft. Wenn ein Fehler auftritt, z.B. es wird eine Zahl im Datum vergessen, erscheint eine Fehlermeldung und der Focus wird wieder auf die TextBox gesetzt. Erst wenn ein Datum in z.B. der richtigen Länge eingegeben wurde, kann in der UserForm weitergearbeitet werden.
Ausserdem solltest Du noch das Schließen der UserForm über das Kreuz oben rechts verhindern, da es mit dem obigen Code sonst zu einem Fehler kommt. Das machst Du am besten mit dem nachfolgenden Code, den Du ebenfalls in die UserForm kopieren mußt.
So, ich hoffe, ich konnte Dir ein wenig weiterhelfen. Bei Problemen mit dem Code oder Fragen melde Dich noch mal.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
hier mal ein Code als Lösungsvorschlag. Kopiere den Code in Deine UserForm.
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
With TextBox1
If Not IsDate(.Text) Or _
InStr(.Text, ":") Or _
.TextLength <> 10 Then
Cancel = True
Beep
MsgBox "Falsche Datumseingabe." & Chr(13) _
& "Bitte Datum im Format TT.MM.JJJJ eingeben"
.SetFocus
.SelStart = 0
.SelLength = .TextLength
End If
End With
End SubBei dem Code wird die Datumseingabe überprüft. Wenn ein Fehler auftritt, z.B. es wird eine Zahl im Datum vergessen, erscheint eine Fehlermeldung und der Focus wird wieder auf die TextBox gesetzt. Erst wenn ein Datum in z.B. der richtigen Länge eingegeben wurde, kann in der UserForm weitergearbeitet werden.
Ausserdem solltest Du noch das Schließen der UserForm über das Kreuz oben rechts verhindern, da es mit dem obigen Code sonst zu einem Fehler kommt. Das machst Du am besten mit dem nachfolgenden Code, den Du ebenfalls in die UserForm kopieren mußt.
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
MsgBox "Bitte schließen Sie die Anwendung mit der -Ende- Schaltfläche.", vbCritical
Cancel = 1
End If
End Sub
So, ich hoffe, ich konnte Dir ein wenig weiterhelfen. Bei Problemen mit dem Code oder Fragen melde Dich noch mal.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 5 von Rahel04
Hi Coros,
danke für Deine Hilfe! Hat mir super weiter geholfen! ... mit anderen Worten: Hat bestens funktioniert.
Gruss
Rahel04
danke für Deine Hilfe! Hat mir super weiter geholfen! ... mit anderen Worten: Hat bestens funktioniert.
Gruss
Rahel04
Antwort 6 von coros
Moin Rahel04,
freut mich, dass Du mit dem Code etwas anfangen konntest. Danke auch für die Rückmeldung.
MfG,
coros
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.
freut mich, dass Du mit dem Code etwas anfangen konntest. Danke auch für die Rückmeldung.
MfG,
coros
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.

