Registriert seit: 14.04.2014
Version(en): 2007
Hallo Experten!
Ich suche nach einen Code der alle buchstaben in einer Textbox abschneidet bis auf den ersten.
Ist das möglich?
Ein Bsp.: Hans1000.01 steht in der TextBox für die weitere Bearbeitung brauche ich nur H1000.01
Ist dies über VBA möglich?
Über jede Hilfe würde ich mich jetzt schon bedanken
mfg
Michael
:98:
WIN 10 Office 2019
Registriert seit: 12.03.2016
Version(en): Excel 2003
Hallo erst mal ...
unten ein kurzer Makro Code als komplett Lösung. In den Const Zeilen must du - deinen Range Bereich- angeben, wo Hans drin steht. Bei mir zum Test war es "B3:B10". Und den Offset in welche Spalte das Ergebnis geschrieben werden soll. Bei mir in der 2. Spalte rechts, kann auch jede andere Spalte sein Für Anfaenger mag der Code verwirrend sein, Profis erkennen sofort das es eine normale Standard Simpel Variante ist.
mfg Gast 123
Code: '29.9.2016 Gast 123 Clever Forum
'alle Buchstaben löschen 'Hans1000.01
Const Bereich = "B3:B10" 'Bereich wo "Hans" steht
Const ofs = 2 'Offset für Ergebnis
Sub Buchstsaben_löschen()
Dim AC As Object, j As Integer
'Schleife für Cut und Text String
For Each AC In Range(Bereich)
'Suche 1. Zahl im String
For j = 1 To Len(AC)
If IsNumeric(Mid(AC, j, 1)) Then
'wenn Zahl gefunden neuen Text
Txt = Left(AC, 1) & Mid(AC, j, 100)
AC.Offset(0, ofs) = Txt: Exit For
End If
Next j
Next AC
End Sub
Registriert seit: 14.04.2014
Version(en): 2007
Hallo Gast123
Tausen dank für die Hilfe, habe das mal getstet und das ist erstmal genau was ich gesucht habe.
Versuche gerade das umzuschreiben für eine TextBox1 in einer Userform.
Ich hoffe es geht auch da mit diesen Code.
Nochmals Danke.
mfg
Michael
:98:
WIN 10 Office 2019
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Michael, Private Sub TextBox1_AfterUpdate()
Dim i As Long
'Suche 1. Zahl im String
For i = 1 To Len(TextBox1)
If IsNumeric(Mid(TextBox1, i, 1)) Then
'wenn Zahl gefunden neuer Text
TextBox1 = Left(TextBox1, 1) & Mid(TextBox1, i)
Exit For
End If
Next i
End Sub Gruß Uwe
Registriert seit: 12.03.2016
Version(en): Excel 2003
Hi Michael und Uwe
schöne Zusammenarbeit, gutes Forum Team Work, gefaellt mir. Kurzer Thread mit guter Lösung! Danke an alle ....
mfg Gast 123
Registriert seit: 14.04.2014
Version(en): 2007
Hallo Uwe
Hallo Gast123,
Danke nochmals für eure Hilfe.
@ Uwe geht super
Habe aber noch ein frage kann man den Code so erweitern das er Leerzeichen erkennt und löscht?
Hab da was im netz gefunden komme aber nicht richtig weiter.
Scheitere dabei dies auf die Textbox umzuschreiben
das habe ich gefunden
Code: Sub Leerzeichen_entfernen()
Dim i As Integer
Dim Zeichen As Integer
For i = 1 To 10
For Zeichen = 1 To Len(Cells(i, 1))
If Mid(Cells(i, 1), Zeichen, 1) = " " Then
If LCase(Mid(Cells(i, 1), Zeichen + 1, 1)) = Mid(Cells(i, 1), Zeichen + 1, 1) Then
Cells(i, 1) = Left(Cells(i, 1), Zeichen - 1) + Mid(Cells(i, 1), Zeichen + 1)
End If
End If
Next
Next
End Sub
Das habe ich daraus gemacht
Code: Dim a As Integer
Dim Zeichen As Integer
For Zeichen = 1 To Len(TextBox1)
If Mid(TextBox1, Zeichen, 1) = " " Then
Stop
TextBox1 = TextBox1.Replace(" ", "") 'Right(TextBox1, Zeichen - 1) & Mid(TextBox1, a)
End If
End If
Next
Ab hier streikt der Code
Code: TextBox1 = TextBox1.Replace(" ", "")
Er Kennt replace nicht.
Mir fehlt eigtlich nur noch, wenn er das leerzeichen gefunden hat dies zu löschen.
Könnt ihr mir dabei nochmal hilfestellung geben?
mfg
Michael
:98:
WIN 10 Office 2019
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Michael, Private Sub TextBox1_AfterUpdate()
Dim i As Long
TextBox1 = Replace(TextBox1, " ", "")
'Suche 1. Zahl im String
For i = 1 To Len(TextBox1)
If IsNumeric(Mid(TextBox1, i, 1)) Then
'wenn Zahl gefunden neuer Text
TextBox1 = Left(TextBox1, 1) & Mid(TextBox1, i)
Exit For
End If
Next i
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
• michel34497
Registriert seit: 14.04.2014
Version(en): 2007
Hallo Uwe!
Suuuuuuuuuuuper.
Genau das was ich haben wollte!
Ich schliese mich von Gast123 an "schöne Zusammenarbeit, gutes Forum Team Work, gefaellt mir."
Nochmals Tausend Dank für die Hilfe an euch
mfg
Michael
:98:
WIN 10 Office 2019
Registriert seit: 14.04.2014
Version(en): 2007
Hallo!
Leider ist eine neue Herausforderung aufgetreten! Unser Controling hat eine ander Schreibweis wie wir.
Der code Funtzt soweit sehr gut!
Zum Code:
Leerzeichen entfernen geht.
Die Buchstaben abschneiden geht.
Jetzt müsste der Code nach der letzten gefunden Zahl alles andere noch abschneiden.
Bsp:
Am anfang steht in der TextBox1 Boy 25.01 M
Kann aber auch sein das in derTextBox1 Boy25.01M123 oder Boy 25.01 M1 B
Nach dem jetzigen Code durchlauf B25.01M oder B25.10M123 oder B25.01M1B
Jetzt darf eigtenlich nur noch B25.01 in der TextBox stehen, ohne eine nachfolge von Buchstaben oder Zahlen!
Was muss geändert werden und wo mache ich mit diesen Code den Fehler das nach der letzten Zahl nicht alles abgeschnitten wird?
Code: TextBox1 = Replace(TextBox1, " ", "") 'Leerzeichen entfernen
'Suche 1. Zahl im String
For a = 1 To Len(TextBox1)
If IsNumeric(Mid(TextBox1, a, 1)) Then
'wenn Zahl gefunden neuer Text
TextBox1 = Left(TextBox1, 1) & Mid(TextBox1, a)
Exit For
End If
Next a
TextBox1 = Left(TextBox1, Len(TextBox1) - 1)
Ich hoffe es geht auch so ohne die Dateien mit anzuhängen
mfg
Michael
:98:
WIN 10 Office 2019
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
08.10.2016, 15:38
(Dieser Beitrag wurde zuletzt bearbeitet: 08.10.2016, 20:26 von Kuwer.)
Hallo Michael,
teste mal so: Private Sub TextBox1_AfterUpdate()
Dim i As Long, j As Long
TextBox1 = Replace(TextBox1, " ", "")
'Suche 1. Zahl im String
For i = 1 To Len(TextBox1)
If IsNumeric(Mid(TextBox1, i, 1)) Then
'wenn Zahl gefunden neuer Text
For j = 1 To Len(TextBox1) - i + 1
If Not IsNumeric(Mid(TextBox1, i, j)) Then Exit For
Next j
TextBox1 = Left(TextBox1, 1) & Mid(TextBox1, i, j - 1)
Exit For
End If
Next i
End Sub Gruß Uwe
|