Registriert seit: 12.10.2014
Version(en): 365 Insider (64 Bit)
Mal etwas ausholend, warum ich das Ganze für eine Schnapsidee halte …
Sobald in einem Format-String ein Doppelkreuz vorkommt, ist das hübsche Format Geschichte, wenn ein Buchstabe vorkommt.
Einen TEXT während der Eingabe zu manipulieren, ist Beschäftigungstherapie.
Bei einer Textbox müsste ich mindestens prüfen, ob IsNumeric(Text) und Len(Text)=12 (oder wie bei mir 15).
So etwas mache ich in einer Zelle mit Datenüberprüfung → Zulassen → Ganzzahl zwischen 100000000000 und 999999999999
und weise ihr das benutzerdefinierte Zahlenformat 0000 0000 000-0 zu.
Fertig!
Bei einer Userform ist der Ersteller dafür verantwortlich, dass das Programm NIEMALS unerwartet abrauchen kann.
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:1 Nutzer sagt Danke an RPP63 für diesen Beitrag 28
• Eizi100
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo,
ich habe mich mal der Therapie etwas länger unterzogen:
Code:
Private Sub TextBox1_Change()
Static strT As String
If Not Len(strT) Then
strT = Replace(Replace(TextBox1, "-", ""), " ", "")
If Len(strT) < 13 And IsNumeric(strT) Then
If Len(strT) > 1 Then
TextBox1 = Trim(Format(strT, "#### #### ###-#"))
Else
TextBox1 = strT
End If
Else
If Len(strT) Then
TextBox1 = Left(strT, Len(strT) - 1)
End If
End If
strT = ""
End If
End Sub
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• Eizi100
Registriert seit: 13.01.2021
Version(en): 2016
Omg
Wie kommt man nur auf sowas.. Ich bewundere euch echt für sowas
LG
Michael
Registriert seit: 13.01.2021
Version(en): 2016
Hallo Ralf
Jetzt habe ich Zeit um Dir zu erklären warum ich so ein Textfeld will. Als erstes mal besten Dank
Es geht um eisenbahnspezifisches Bestellformular für Wagenzuführungen. Ein Waggon ist immer 12stellig (numerisch) und wird immer z.B.: 5081 8073 507-2 oder 7380 2190 104-8 geschrieben.
Die Zahlen sind aber nicht zusammengewürfelt und haben einzeln eine Bedeutung und im 4er String wieder eine andere Bedeutung (tlw auch im 2er String. z.B.: 80 ist DB, 81 ist ÖBB, 83 Schweiz). Welche Klasse, welche Klimananlage, Schlafwagen, Sitz usw. Nur die letzten Zahlen, wie in diesem Beispiel 507-2 ist die fortlaufende Nummer, wobei die letzte Zahl eine Prüfziffer ergibt (diese ist aber auch nicht willkürlich sondern wird aus allen Ziffern errechnet).
Das erste was wir bei unserem Betrieb gelernt haben, wie diese zu lesen und zu schreiben sind. Und weil ich ein fauler Hund bin und ich am liebsten alles in einer Wurst schreibe, benötige ich dein Textfeld.
Ich hoffe Du kannst mir folgen für was das gut ist
LG
Michael
Registriert seit: 22.09.2020
Version(en): MS 365 Family
Hallo, ich habe einen ähnliches Makro hiergefunden!
Code:
Private Sub TextBox1_Change()
If BoEnter = False Then
If Len(TextBox1) = 4 Then ' es wurden 4 Zeichen eingegeben
If InStr(TextBox1, "-") = 0 Then ' prüfen ob schon ein Strich eingegeben wurde
TextBox1 = TextBox1 & "-" ' Strich ergänzen
End If
ElseIf Len(TextBox1) = 9 Then ' eingegebene Zeichenkette ist 9 Zeichen lang
' prüfen ob schon 2 Strich eingegeben wurden
If Len(TextBox1) - Len(Application.Substitute(TextBox1, "-", "")) < 4 Then
TextBox1 = TextBox1 & "-" ' Strich ergänzen
End IfStrich
End If
End If
End Sub
Gruß Klauses Grüßt der niederRhein!
Folgende(r) 1 Nutzer sagt Danke an Fuzzy62 für diesen Beitrag:1 Nutzer sagt Danke an Fuzzy62 für diesen Beitrag 28
• Eizi100
Registriert seit: 13.01.2021
Version(en): 2016
03.03.2021, 10:43
(Dieser Beitrag wurde zuletzt bearbeitet: 03.03.2021, 10:49 von Eizi100.)
Danke Klaus
Das mit
ist auch genial
Es gibt echt extrem viele Varianten. Dein Code ist auch super. Nur habe ich das Problem dass ich bei den Letzten Stellen dann bei 3 Zeichen einen Strich brauche.
es sollte so aussehen 5081 2173 507-5.
Aber ich habe hier extrem viele Lösungen für mein Problem bekommen. Macht euch keinen Kopf mehr darüber
Ich werde mich heute damit spielen. Ich will mich bei
ALLEN hier im Forum bedanken
LG
Michael