Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1792to1796
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
Inhaltsverzeichnis

UF TB Datum prüfen

UF TB Datum prüfen
16.11.2020 11:06:47
Peter
Hallo,
ich habe eine UF mit TextBox1. In diese trage ich ein Datum ein. Dieses prüfe ich wie folgt:

If TextBox1.Tag = "JetztzNicht" Then Exit Sub  '"JetztzNicht" eingebaut in Commandbutton4  _
damit ComboBox3_Change nicht ausgeführt wird
If Len(TextBox1) = "0" Then
Label37.Visible = True
OptionButton6.Visible = True
OptionButton5.Visible = True
Label32.BackColor = &HFF&     'rot
Label32.Caption = "bitte Datum eingeben!" _
& vbLf & "oder Buchungen Anzeigen/Drucken oder" _
& vbLf & "mittels Optionbutton ""ja"" unten Kategorie bearbeiten!" _
& vbLf & "oder" _
& vbLf & "in Liste Eintrag auswählen, falls dieser geändert werden muss!"
TextBox1.SetFocus
ElseIf Len(TextBox1) > "0" Then
Label37.Visible = False
OptionButton6.Visible = False
OptionButton5.Visible = False
End If
'Anfang Datum "." Vorgabe und Begrenzung in Eigenschaften der TextBox1 unter MaxLength auf  _
10 Stellen eingestellt
If TextBox1.Tag = "1" = True Then Exit Sub
If Len(TextBox1) = 2 Then
Label72.Visible = False
If InStr(TextBox1, ".") = 0 Then TextBox1 = TextBox1 & "."
ElseIf Len(TextBox1) = 5 Then
If Len(TextBox1) - Len(Application.Substitute(TextBox1, ".", "")) 
Das bedeutet, dass nach Tag, nach Monat ein Punkt gesetzt wird und das Datum insgesamt nicht länger als 10 Stellen sein darf.
Da ich bestimmte Tippfehler vermeiden möchte, sollte geprüft werden, ob z. B. im Januar nur 01 - 31, im Februar nur 01 - 28 bzw. 29, usw. eingetragen sind. Das gleiche für Monat 01 - 12, und für Jahr Vergleich mit aktuellem Jahr.
Könnt ihr mir hierbei bitte helfen.
Gruss
Peter

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UF TB Datum prüfen
16.11.2020 11:52:36
ralf_b
If IsDate(TextBox1.Value) Then
AW: UF TB Datum prüfen erledigt
16.11.2020 12:06:03
Peter
Hallo Ralf,
besten Dank für Deine Hilfe - klappt einwandfrei.
Gruss
Peter
gerne owt
16.11.2020 12:14:19
ralf_b
AW: leider doch nicht das perfekte Ergebnis
16.11.2020 16:36:45
Peter
Hallo Ralf,
anbei die von mir gefertigte Datei.
Wenn ich als Datum: 00.05.2020 eingebe - kein Datum
Wenn ich als Datum: 01.13.2020 eingebe - Datum = falsch
Wenn ich als Datum: 01.02.0000 eingebe - Datum = falsch
Kannst Du mir bitte noch helfen, dass dies nicht der Fall ist.
Wenn das Datum nicht korrekt ist - insbesondere das Kalenderjahr, dann stimmt an anderer Stelle die Sortierung nicht.
Datei anbei: https://www.herber.de/bbs/user/141607.xlsm
Besten Dank
Gruss
Peter
Anzeige
AW: leider doch nicht das perfekte Ergebnis
16.11.2020 17:57:03
ralf_b
dann spiel mal damit.
Dim strDatum As String
strDatum = Me.TextBox1.Text
If Len(strDatum) = 10 Then
If IsDate(strDatum) Then
If Not strDatum = Format(CDate(strDatum), "DD.MM.YYYY") Then
MsgBox "Ungültiges Datum"
With Me.TextBox1
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
End If
Else
MsgBox "Fehleingabe!"
With Me.TextBox1
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
End If
end if

AW: perfektes Ergebnis
16.11.2020 18:06:20
Peter
Hallo Ralf,
habe mal mit dem Code "gespielt". Klappt einwandfrei.
Ich hoffe, dass ich damit zum Ende komme mit meinem Gesamtmakro.
Vielen Dank für Deine Hilfe.
Gruss
Peter
Anzeige
AW: perfektes Ergebnis
16.11.2020 19:51:54
ralf_b
der Code stammt aus einer google suche, nach wenigen Minuten habe ich das gefunden.
der Dank geht an Case.
AW: UF TB Datum prüfen
16.11.2020 17:25:28
onur
Du musst beim Verlassen der Textbox prüfen, nicht nach jeder Ziffer - Das hier reicht:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsDate(TextBox1) Then
Label1.Caption = "Datum"
Else
TextBox1 = ""
Label1.Caption = "kein Datum"
Cancel = True
End If
End Sub

AW: UF TB Datum prüfen
16.11.2020 17:26:30
onur
Der ganze Code im Change-Event kann weg.
AW: UF TB Datum prüfen
16.11.2020 17:37:34
Peter
Hallo Onur,
besten Dank für Deine Hilfe.
Leider funktioniert auch beim Verlassen die Prüfung nicht, wenn beim Jahr z. B. 0000 eingegeben wird.
Hast Du hierzu noch einen Rat?!
Gruss
Peter
Anzeige
AW: UF TB Datum prüfen
16.11.2020 18:10:44
onur
Dann so:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim dat, ta, mo, ja, arr
If IsDate(TextBox1) Then
arr = Split(TextBox1, ".")
ta = Val(arr(0))
mo = Val(arr(1))
ja = Val(arr(2))
dat = DateSerial(ja, mo, ta)
TextBox1 = Format(CDate(dat), "dd.mm.yyyy")
End If
If IsDate(TextBox1) And ja > 1900 And mo 

AW: UF TB Datum prüfen
17.11.2020 07:54:06
Peter
Hallo Onur,
besten Dank für Deine Hilfe. Ich habe Deine Version getestet - läuft einwandfrei.
Leider ist es aufgrund meinem Dateiaufbau nicht sinnvoll mit TextBox1_Exit zu arbeiten.
Ich habe daher das Ganze in einen separaten Commandbutton eingebaut und lasse dann in TextBox1_Change den Button ausführen, wenn die Länge der TextBox 10 ist.
Ausserdem habe ich dein Makro noch leicht geändert, indem ich den Text in der TextBox1 markieren lasse, damit nicht alles neu eingegeben werden muss.
Meinen Code nachstehend:

Option Explicit
Private Sub CommandButton2_Click()
Dim dat, ta, mo, ja, arr
If IsDate(TextBox1) Then
arr = Split(TextBox1, ".")
ta = Val(arr(0))
mo = Val(arr(1))
ja = Val(arr(2))
dat = DateSerial(ja, mo, ta)
TextBox1 = Format(CDate(dat), "dd.mm.yyyy")
End If
If IsDate(TextBox1) And ja > 1900 And mo 
Das Ganze läuft einwandfrei. Ich hoffe, dass es auch so in meiner Orginaldatei läuft.
Gruss
Peter
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige