Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
280to284
280to284
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Datumformat prüfen - Textbox ist EIngabe Datum?

Datumformat prüfen - Textbox ist EIngabe Datum?
22.07.2003 09:17:18
Hartmut
Hallo, folgende Frage:
in einer Spalte habe ich untereinander die Kalenderdaten eingegeben. (01.01. / 02.01. / 03.01. usw.)
In einem UserForm soll der Nutzer ein Datum eingeben. Dieses Datum wird dann in der entsprechenden
Spalte gesucht. Wenn der Nutzer nun eine falsche Datumangabe einträgt, z. B. 30.02. soll ein Fehlerhinweis
kommen. Gibt es da einen entsprechenden Befehl wie etwa:
If textbox1.value is nodate then msgbox "es gibt keinen 30.02."
Danke für die HIlfe.
Hartmut

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datumformat prüfen - Textbox ist EIngabe Datum
22.07.2003 09:54:22
Thomas Ramel
Grüezi Hartmut
EinProblem beim prüfen von Eingaben in Textboxen ist die Behandlung von zweistlligen Jahreszahlen.
Die folgende Prozedur wendet dieselben Regeln an, wie dies in den Ländereinstllungen üblicherweise eingestellt ist:


Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim strDatum As String
Dim Datum As Date
If (Len(TextBox1.Text) - InStrRev(TextBox1.Text, ".")) < 4 Then
strDatum = VBA.Left(TextBox1.Text, InStrRev(TextBox1.Text, ".")) _
& 19 + (Val(VBA.Right(TextBox1.Text, 2)) < 30) * -1 _
& VBA.Right(TextBox1.Text, 2)
Else
strDatum = TextBox1.Text
End If
On Error Resume Next
Datum = CDate(strDatum)
If Err.Number <> 0 Then
On Error GoTo 0
MsgBox "Das Datum ist ungültig"
Else
MsgBox Datum
End If
End Sub

Code eingefügt mit: Excel Code Jeanie
Mit freundlichen Grüssen
Thomas Ramel
- MVP für Microsoft-Excel -

Anzeige
AW: Datumformat prüfen - Textbox ist EIngabe Datum
22.07.2003 11:53:24
Hartmut
Hallo Thomas, habe den Code eingegeben. Erhalte allerdings eine Fehlermeldung:
SUB oder Function nicht definiert und blau hinterlegt ist: InStrRev
Meine Programmierung funktioniert allerdings jetzt, wenn ich die Jahreszahl 4-stellig eingebe.
Falls Du Dir das noch ansehen möchtest, ich versuche die Datei noch hochzuladen.
Deinen Code habe ich auskommentiert.
https://www.herber.de/bbs/user/310.xls
Gruss Hartmut

AW: Datumformat prüfen - Textbox ist EIngabe Datum
22.07.2003 13:39:24
Thomas Ramel
Grüezi Hartmut
Richtig, das hatte ich übersehehn. InstrRev() gibts erst seit xl2000.
Stattdessen kannst Du die folgenden Funktin verwenden und den Aufruf im Makro entsprechend anpassen:

Function InStrRev97(mystr As Variant, mydelim As String)
As Long
Dim i As Long
InStrRev97 = 0
For i = Len(mystr) To 1 Step -1
If Mid(mystr, i, 1) = mydelim Then
InStrRev97 = i
Exit Function
End If
Next i
End Function

Mit freundlichen Grüssen
Thomas Ramel
- MVP für Microsoft-Excel -

Anzeige
AW: Datumformat prüfen - Textbox ist EIngabe Datum
22.07.2003 13:51:31
Hartmut
Hallo Thomas,
danke für die Info. Da ich noch kein Profi bin ( :-( ) kurze Frage: Wo muss ich diesen Code eingeben? Kann der andere dann ganz raus?
Wie rufe ich die Funktion in einem Makro auf?
Hartmut

AW: Datumformat prüfen - Textbox ist EIngabe Datum
22.07.2003 16:47:24
Thomas Ramel
Grüezi Hartmut
Kopiere den Code in ein allgemeinse Modul in deiner Mappe.
Ersetze dann den Aufruf 'InstrRev()' durch 'InStrRev97()'; also im Prinzip nur die '97' anhängen und zwar in beiden Fällen.
Mit freundlichen Grüssen
Thomas Ramel
- MVP für Microsoft-Excel -

AW: Datumformat prüfen - Textbox ist EIngabe Datum
22.07.2003 10:56:36
Hartmut
Hallo Thomas, danke für die Erklärung. Werde es ausprobieren und anschließend Nachricht geben.
Hartmut

Anzeige
AW: Datumformat prüfen - Textbox ist EIngabe Datum?
22.07.2003 09:45:00
Mareike
Hallo Hartmut,
es gibt eine Funktion dafür: IsDate(Ausdruck)
z.B.
If not IsDate(textbox1.text) then
MsgBox("Kein gültiges Datum")
end if
Gruß
Mareike

AW: Datumformat prüfen - Textbox ist EIngabe Datum?
22.07.2003 09:59:36
Hartmut
Hallo Mareike, danke für den schnellen Tip.
Problem ist, dass der 30.02. als Datum erkannt wird.
Kann dies evtl. an einer fehlenden Formatierung der Textbox liegen?
Wenn ja, wie kann ich bestimmen, dass die Textbox ein Datum beinhalten muss?
Hartmut

AW: Datumformat prüfen - Textbox ist EIngabe Datum?
22.07.2003 10:07:44
Mareike
Hallo Hartmut,
die Funktion funktioniert nur wenn du eine Jahreszahl mitgibtst.
Also statt 30.02. muss es dann 30.02.03 oder 30.02.2003 (geht beides!) heißen.
Gruß
Mareike

Anzeige
AW: Datumformat prüfen - Textbox ist EIngabe Datum?
22.07.2003 10:42:38
Hartmut
Hallo Mareike,
wenn ich die Jahreszahl 4-stellig eingebe funktioniert es.
Trage ich nur ein 30.02.04 wandelt das Programm das Datum um auf 04.02.1930, warum auch immer.
Damit ist es aber wieder ein gültiges Datum.
Hast Du hierfür eine Erklärung?
Hartmut

AW: Datumformat prüfen - Textbox ist EIngabe Datum
22.07.2003 11:50:34
Thomas Ramel
Grüezi zusammen
Das hängt damit zusammen, wie Excel 2-stellige Jahreszahlen interpretiert.
Die Online-Hilfe ist dazu leider recht dürftig.
Meine oben gechilderte Prüfung richtet sich danach und wandelt 2- und 3-stellige Jahreszahen gemäss den Standard-Einstellungen der Ländereinstllung um.
Dann klappt es auch mit isdate() oder, wie in meinem Beispiel, mit CDate() und der Fehler-Routine.
Aus dem Ganzen könnte man noch eine Funktion machen, welche auf ein korrektes Datum prüft.
Mit freundlichen Grüssen
Thomas Ramel
- MVP für Microsoft-Excel -

Anzeige
AW: Datumformat prüfen - Textbox ist EIngabe Datum?
22.07.2003 10:56:11
Mareike
Hallo Hartmut,
das ist ja komisch, wenn ich ein gültiges Datum eingebe (z.B. 1.4.04), dann ist das kein Problem.
Excel sieht das Datum 30.02.03 im anderen Format, also jj.mm.tt, aber warum weiß ich leider auch nicht.
Gruß
Mareike

AW: Datumformat prüfen - Textbox ist EIngabe Datum?
22.07.2003 10:58:47
Hartmut
Hallo Mareike, erstmal schönen Dank für Deine Hilfe. Ich probiere jetzt noch die Empfehlung von Thomas aus.
Bis dann. Hartmut

321 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige