Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1108to1112
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Datum in Textbox eingeben - Fehler abfangen
Wolfgang
Hallo,
Textbox5 enthält ein Beginndatum, Textbox6 das Endedatum. Code Zeitberechnen4 berechnet die Zeitdifferenz zwischen den beiden Textboxes. Wie kann ich folgende Probleme abfangen?:
In der Berechnung wird in Textbox6 auch leider ein "Negativdatum", also ein Datum, welches älter als das Datum in Textbox5 ist, zugelassen. Wie kann ich abfangen, dass nur ein Datum nach dem Datum in Textbox5 zugelassen wird? - Wie kann ich evtl. das Format noch konkreter i.d. Griff kriegen? - es soll lauten "21.10.09" und wird dabei ohne Trennzeichen eingegeben. Wäre denkbar, selbst wenn 2009 eingegeben wird, dass nur das Format 09 akzeptiert wird? - Danke schon jetzt für die Rückmeldungen.
Gruß - Wolfgang
Private Sub TextBox5_Change()
Dim Txt$
Txt = TextBox5.Text
If Txt = "" Then Exit Sub
If IsNumeric(Txt) = False Then GoTo ERRORHANDLER
If Len(Txt) = 6 Then
Txt = Left(Txt, 2) & "." & Mid(Txt, 3, 2) _
& "." & Right(Txt, 2)
If Not IsDate(Txt) Then
GoTo ERRORHANDLER
Else
TextBox5.Text = Txt
Exit Sub
End If
ERRORHANDLER:
Beep
MsgBox "Bitte nur Zahlen eingeben !", vbCritical
TextBox5.Value = ""
End If
End Sub
Private Sub TextBox6_Change()
Dim Txt$
Txt = TextBox6.Text
If Txt = "" Then Exit Sub
If IsNumeric(Txt) = False Then GoTo ERRORHANDLER
If Len(Txt) = 6 Then
Txt = Left(Txt, 2) & "." & Mid(Txt, 3, 2) _
& "." & Right(Txt, 2)
If Not IsDate(Txt) Then
GoTo ERRORHANDLER
Else
TextBox6.Text = Txt
Call Zeitberechnen4
Exit Sub
End If
ERRORHANDLER:
Beep
MsgBox "Bitte nur Zahlen eingeben !", vbCritical
TextBox6.Value = ""
End If
End Sub

Sub Zeitberechnen4()
If IsDate(TextBox5) And IsDate(TextBox6) Then
TextBox7 = Round((Abs(CLng(CDate(TextBox5)) - CLng(CDate(TextBox6))) + 1) / 30.4, 2)
Else
'TextBox7 = ""
MsgBox "vollständiges Datum", vbCritical
Exit Sub
End If
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Datum in Textbox eingeben - Fehler abfangen
21.10.2009 20:38:23
Daniel
HI
es wird wesentlich einfacher, wenn du die Prüfung in das Textbox.EXIT - Event einbaust, denn das läuft erst ab,wenn der Anwender die Eingabe beendet hat und woanders hin wechselt.
damit sparst du dir die aufwendigen Zwischenprüfungen, ob das Datum schon vollständig eingegeben wurde.
über die Format-Funktion kannst du dann das eingegebene Datum in die gewünschte Form umstellen, dh der Anwender könnte auch z.B. "1.1" eingeben und das Makro würde dann "01.01.09" daraus machen:
Private Sub TextBox5_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsDate(TextBox5.Text) Then
TextBox5.Text = Format(CDate(TextBox5.Text), "DD.MM.YY")
Else
MsgBox "Bitte gültiges Datum eingeben."
Cancel = True
End If
End Sub
Private Sub TextBox6_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsDate(TextBox6.Text) Then
If IsDate(TextBox5.Text) Then
If CDate(TextBox5.Text + 0) > CDate(textbox6.Text) Then
MsgBox "Enddatum muss grösser als Beginndatum sein."
Cancel = True
Else
textbox6.Text = Format(CDate(textbox6.Text), "DD.MM.YY")
End If
Else
textbox6.Text = Format(CDate(textbox6.Text), "DD.MM.YY")
End If
Else
MsgBox "Bitte gültiges Datum eingeben."
Cancel = True
End If
End Sub
Gruß, Daniel
Anzeige
AW: Datum in Textbox eingeben - Fehler abfangen
21.10.2009 20:45:28
Josef
Hallo Wolfgang,
warum denn so kompliziert? Nimm doch ein "Date- And Time-Picker Control", dann kannst du dir die ganzen "Verrenkungen" sparen.
https://www.herber.de/bbs/user/65249.xls
Gruß Sepp

AW: Datum in Textbox eingeben - Fehler abfangen
22.10.2009 05:31:09
Wolfgang
Hallo Josef,
ich habe versucht, Deine gute Idee aufzugreifen und würde sie gerne realisieren. Problem ist, dass die Textboxes5 und 6 sich mitten in einem Pool von 16 Textboxes befinden und bei verschiedenen Abfragen dann abgefragt werden. Nun kam mir die Idee, diese Textboxes durch Deine Lösung zu beschicken. Das heißt also, bei Klick dann das jeweilige Datum an Textbox5 bzw. Textbox6 zu schicken. Die Berechnungen dahinter etc. liefen dann ja weiter über TextBox5 bzw. 6; Könntest Du mir da noch evtl. Hilfestellung geben, wie ich das jeweilige Datum von DTPicker1 in Textbox5 und DTPicker2 in Textbox6 bekomme? Danke schon jetzt wieder für Deine Rückmeldung.
Gruß - Wolfgang
Anzeige
Danke, Josef, Daniel und Tino!!
22.10.2009 18:59:37
Wolfgang
Hallo
Josef, Daniel und Tino,
Ich habe noch länger hin- und her getestet, so dass ich mich jetzt erst zurückmelde. Dank Eurer Hilfe konnte ich Knackpunkte und Gefahrenpunkte der Falscheingabe von Daten herausnehmen. Ich habe mich dabei für eine Mischung Eurer Codes entschieden und dabei aber die Lösung von Dir, Josef, vorranging genommen. Dabei kann wirklich nichts mehr schiefgehen. Die Frage, die ich heute morgen noch dazu hatte, konnte ich dabei auch zwischenzeitlich klären. Recht herzlichen Dank Euch noch einmal!! - Einen schönen Abend noch.
Gruß - Wolfgang
Anzeige

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige