Anzeige
Archiv - Navigation
1648to1652
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

Viele "Textfelder" mit Datumeingabe beschränken

Viele "Textfelder" mit Datumeingabe beschränken
30.09.2018 22:44:04
Oliver
Hey Leute,
es ist wahrscheinlich die 1000 Frage nach dem bekannten Problem ein Datum in ein Textfeld zu bekommen. Ich konnte mit den anderen Einträgen aber leider nichts anfangen.
Ich habe eine Userform mit 209 TextBoxen von denen ca. 100 mit einem Datum versehen werden.
Ich habe folgenden Code um eine Datumseingabe zu beschränken/zu vereinfachen:

Private Sub TextBox8_Change()
Dim intLaenge As Integer, strTemp As String
If Len(TextBox8.Value) = 3 And IsNumeric(Mid(TextBox8, 2, 1)) And TextBox8.SelStart = 3  _
Then _
TextBox8.Value = Left(TextBox8, 2) & "." & Mid(TextBox8, 3, 1)
If Len(TextBox8.Value) = 6 And IsNumeric(Mid(TextBox8, 5, 1)) And TextBox8.SelStart = 6  _
Then _
TextBox8.Value = Left(TextBox8, 5) & "." & Mid(TextBox8, 6, 1)
strTemp = TextBox8.Value
For intLaenge = 1 To Len(TextBox8)
If InStr("0123456789.", Mid(TextBox8, intLaenge, 1)) = 0 Then
strTemp = Left(TextBox8, intLaenge - 1) & "#" & Mid(TextBox8, intLaenge + 1)
End If
Next
TextBox8 = Replace(strTemp, "#", "")
End Sub

Zusätzlich beschränke ich das Feld auf 10 Zeichen.
Der Code ist nicht perfekt, weil wenn ich zum Beispiel das Jahr am Ende einer EIngabe aufgrund von einem Eingabefehler lösche, setzt er mir stattdessen einen zweiten Punkt und ich muss alles markieren und löschen und das Datum neu eingeben. Naja wie gesagt, nicht perfekt und ich habe keinen besseren Code.
Hauptproblem ist aber folgendes:
Wie realisiere ich nun dass dieser Code auf alle betreffenden Textboxen angewendet wird, ohne ihn für jede Textbox einzutragen?
PS: Falls der Code verbessert werden kann, immer gerne gesehen.
Vielen Dank
Oliver

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Viele "Textfelder" mit Datumeingabe beschrän
01.10.2018 10:30:54
Daniel
Hi
dann such mal nach "Klassenprogrammierung". Da solltest du was finden, wie man Eventmakros schreibt, die für mehrere Steuerelemente gültig sind.
wobei ich mir bei dieser Menge von Textfelden die Frage stellen würde, obs nicht einfacher wäre, ein Tabellenblatt als Eingabemaske zu verwenden.
Vorallem, wenn deine Userform hauptsächlich aus TextBoxen besteht.
vorallem könntst du dann relativ einfach über die Datenüberprüfung festlegen, dass in bestimmten Zellen ein Datumswert eingegeben werden muss.
Gruß Daniel
AW: Viele "Textfelder" mit Datumeingabe beschränken
01.10.2018 12:17:12
fcs
Hallo Oliver,
wie von Daniel bereits erwähnt kann man bei vielen gleichartigen Textboxen in einem Userform mit Klassenmodulen arbeiten, um die Eingabe zu steuern.
Hier ein kleines Beispiel:
https://www.herber.de/bbs/user/124346.xlsm
vorbereitet sind Datumseingaben, wobei nur die Ziffern eingeben werden und das Makro die Punkte automatisch ergänzt, und die Eingabe von Dezimalzahlen mit 2 Nachkommastellen.
Hier werden 2 Ereignisse der Textbox überwacht:
1. KeyPress
Hiermit kann man steuern, welche Tasteneingaben zulässig sind (z.B. nur Ziffern)
2. Change
Wird genutzt, um automatisch beim Datum den Punkt nach dem 2. und 5. Zeichen einzufügen und zu prüfen, ob die Eingaben für Tag (01 bis 31) oder und Monat (01 bis 12) korrekt sind, und ob der Tag-Wert für den Monat passt.
Für eine effektive Nutzung der Klassenmodule ist es wichtig, dass die Steuerelemente im Userform möglichst systematisch benamt werden - immer Textteil + fortlaufende Nummer z.B.: txbDatum001, txbDatum002, usw.
So kann man die Elemente im Userform "einfach" in For-Next-Schleifen den im Klassenmodul angelegten Steuerelementen zuweisen.
Bei Namensmischmasch muss man die Steuerelemente in der Initialisierungs-Prozedur des Userforms einzeln zuweisen.
Allerdings frage ich mich auch: Sind tatsächlich so viele Textboxen nötig, oder kann man das auch anders eingeben - zum Beispiel in Kombination von Listbox und Textboxen. Dabei werden die Textboxeingaben in einer Listbox gespeichert. Siehe "Alternativ" in meiner Datei.
LG
Franz
Anzeige
AW: Viele "Textfelder" mit Datumeingabe beschränken
01.10.2018 21:22:04
Oliver
Vielen Dank für eure Hilfe und fcs für deine Mühe mit der Datei. Hat mir sehr geholfen, einfach Klasse.
Zur Frage der vielen Textboxen, ja leider sind so viele nötig, aber der User muss nicht alle befüllen sondern nur bestimmte verändern können. Von daher geht es.
Gruß Oliver

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige