Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1748to1752
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
Textbox Datumsformat und Punkte vorgeben
06.04.2020 08:51:25
MarC
Guten Morgen alle,
ich möchte gerne die Funktionalität meiner Textbox einschränken. Dass heißt es dürfen bzw. können nur Zahlen eingegeben werden und diese nur im Datumsformat TT.MM.JJJJ. Die Punkte sollten automatisch ergänzt werden. Leider weiß ich nur wie man die Anzahl der Zeichen in einer Textbox begrenzt nicht aber wie man Punkte ergänzen lassen kann geschweige das Format vorgibt.
Würde mir da bitte jemand helfen? Im Internet bin ich noch nicht ganz fündig geworden.

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

Betreff
Datum
Anwender
Anzeige
AW: Textbox Datumsformat und Punkte vorgeben
06.04.2020 09:48:45
MarC
Vielen Dank, euch beiden für die schnelle Hilfe. Ich habe den Code-Teil der für das Datum erforderlich ist kopiert und es funktioniert.
Jetzt haben sich zwei weitere Fragen ergeben. Und zwar wollte ich den Code für mehrere Textboxen hernehmen. Ich hätte aber nicht gedacht das der Code so umfangreich ist. Muss ich die 3 Codebäume (Keypress / Change / AfterUpdate) für jede Textbox schreiben oder kann man das auch mittels schleife lösen? Kann ich die Textboxen in der Schleife ansprechen z.B. Textbox & i oder geht das gar nicht weil der Textboxname ja im Sub steht?
Meine zweite Frage bezieht sich direkt auf dein Beispiel Nepumuk. Wenn die Eingabe des Datums falsch war kommt danach eine msg und wenn ich dann das Datum erneut eingebe werden die Punkte nicht mehr gesetzt. Hast du ein Beispiel bei dem die Punkte selbst nach der falsch Eingabe wieder gesetzt werden?
Anzeige
AW: Textbox Datumsformat und Punkte vorgeben
06.04.2020 10:01:22
Nepumuk
Hallo Marc,
1. Kann ich nicht bestätigen. Wenn ich das falsche Datum lösche und erneut eine Eingabe mache werden die Punkte gesetzt.
2. Das müsstest du über eine Klasse der Textboxen machen. Brauchst du dazu Hilfe?
Gruß
Nepumuk
AW: Textbox Datumsformat und Punkte vorgeben
06.04.2020 10:16:18
MarC
Also das falsche Datum wird automatisch gelöscht und die Maus springt dann die nächste Textbox. Aber wenn ich dann zurück in die erste Textbox gehe werden die Punkte nicht mehr hinzugefügt (bei deinem File nicht bei dem Teil den ich kopiert habe). Ich weiß leider nicht warum es bei mir nicht geht.
Zu Punkt 2 bräuchte ich vielleicht schon Hilfe. Ich habe hier gelernt wie man mehrere Labels und Textboxen in einem Sub mittels schleife anspricht (ein Beispiel):
Dim NewTextBox As MSForms.TextBox
If uf_Edit_Product.Controls.Item(ci).Name = "txtProzess" & ti Then
Aber ich weiß nicht was eine Klasse ist und wie man diese verwendet. Ich google erst mal.
Anzeige
Ich schaff es leider nicht
10.04.2020 20:04:55
MarC
Hallo Nepumuk,
ich weiß leider nicht wie ich den unten aufgeführten Code in für eine Klasse brauchbaren umwandel soll. Der Code soll ja nicht alle Textboxen einschränken sondern nur die Txt_Datum1,2,3,4... usw heißen.
Ich weiß nicht wie ich mich von einem Element spezifischen Sub lösen soll. Deine Beispiele sind interessant aber umsetzen kann ich es leider trotzdem nicht.
Könnte mir jemand hierbei helfen? Vll den Ansatz erklären?

Private Sub Txt_Datum_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case Asc("0") To Asc("9")
Case Asc(".")
If Len(Txt_Datum) = 0 Then
KeyAscii = 0
Else
If Len(Txt_Datum) - Len(Application.Substitute(Txt_Datum, ".", "")) = 2 Then
KeyAscii = 0
ElseIf Len(Txt_Datum) > 1 Then
If Mid(Txt_Datum, Len(Txt_Datum), 1) = "." Then
KeyAscii = 0
End If
End If
End If
Case Else
KeyAscii = 0
End Select
End Sub
Private Sub Txt_Datum_Change()
If Txt_Datum.Tag  "1" = True Then
If Len(Txt_Datum) = 2 Then
If InStr(Txt_Datum, ".") = 0 Then
Txt_Datum = Txt_Datum & "."
End If
ElseIf Len(Txt_Datum) = 4 Then
If Len(Txt_Datum) - Len(Application.Substitute(Txt_Datum, ".", ""))  "." Then
Txt_Datum = Txt_Datum & "."
End If
End If
ElseIf Len(Txt_Datum) = 5 Then
If Len(Txt_Datum) - Len(Application.Substitute(Txt_Datum, ".", ""))  "" Then
MsgBox "kein Datum!!!"
Txt_Datum = ""
End If
End Sub

Anzeige
AW: Textbox Datumsformat und Punkte vorgeben
11.04.2020 11:13:26
Oberschlumpf
Hi MarC,
da du ja eine andere Datei als die von Nepumuk zu nutzen scheinst, wieso zeigst du uns dann nicht mal per Upload - deine - Datei, bzw eine Bsp-Datei mit Bsp-Daten, die aber im Userform vom Aufbau aussieht, wie dein Original?!
Nepumuks Userform enthält 1 Textbox.
Du erzählst, dein Userform enthält mehrere Textboxen.
Zeig bitte eine Datei mit Userform und mehreren Textboxen. Und zeig auch deinen jetzigen Code, mit dem das Ganze noch nicht so ganz funktioniert.
Ciao
Thorsten
Anzeige
AW: Textbox Datumsformat und Punkte vorgeben
11.04.2020 14:55:46
MarC
Hallo Thorsten,
in meinem UserForm befinden sich ca. 40 Textboxen und in 18 davon kommt ein Datum. Diese möchte ich gerne so begrenzen das nur ein Datum eingetragen werden kann (keine Buchstaben, und maximal 10 Stellen). Dank Nepumuks Beispiel Datei funktioniert es für eine TextBox (TextBox4). Jetzt war meine Frage ob ich den Code 18 mal kopieren muss oder es eine andere kürzere Möglichkeit gibt. Mit Klassen sollte es gehen, aber das beherrsche ich null. Wenn es nicht geht kopiere ich halt den Code 18 mal ^^
https://www.herber.de/bbs/user/136641.xlsm
Anzeige
AW: Textbox Datumsformat und Punkte vorgeben
11.04.2020 15:30:01
Nepumuk
Hallo Marc,
warum benutzt du nicht das beispiel aus meinem 2. Post. Da ist eine Klasse und 4 Textboxen drin.
Gruß
Nepumuk
Jetzt funktioniert es THX
11.04.2020 16:23:04
MarC
Hallo Nepumuk,
ich habe dein Beispiel aus dem zweiten Post genommen aber anscheinend habe ich da immer wieder was falsch gemacht. Jetzt habe ich es neu aufgesetzt den Zähler von 4 auf 18 gesetzt die betroffenen Textboxen umbenannt zu TextB und jetzt geht es.
For lngIndex = 1 To 18
Set objTextBoxClass.TextBox = Controls("TextB" & CStr(lngIndex))

Vielen Dank für eure Hilfe und sorry das ich es nicht gleich hinbekommmen habe ka was da war.
Anzeige
Ohne Klassen
11.04.2020 15:53:12
Daniel
Hi
ggf kannst du die Inhalte der Eventmakros in normale Makros bzw Functions umschreiben.
Als Übergabeparameter verwendest du die Übergabeparameter des Events (falls vorhanden) sowie zusätzlich das Steuerelement selbst (Typ Control oder ggf Object)
Im Code verwendest du dann die Übergabevariable anstelle des Steuerelements.
Dann brauchst du zwar immer noch die Eventmakros für jede Textbox, aber diese können deutlich kürzer werden, weil du dort nur noch das Makro bzw die Funktion aufrufen musst.
Wobei ich mir schon überlegen würde, ob soviel Aufwand für ein bisschen Komfort sein muss und ob nicht eine Prüfung am Schluss nach Eingabe aller Werte ausreicht.
Gruß Daniel
Anzeige

53 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige