Clever-Excel-Forum

Normale Version: An der x-ten Stelle ein Sonderzeichen setzen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen

Ich möchte folgendes umsetzen

Ich habe zum Beispiel folgende Zahl in der ComboBox1 im UserForm1:

123456123456123456123456

Nun möchte ich, dass er mir an 6., 12. und 18. Stelle ein "/" reinsetzt um die Zahlen zu trennen.

Kann mir jemand helfen?

Lg Primo
Hi,

fragt sich erstens schon mal, wo die Zahl herkommt?

Kennst du

=LINKS(....)
=TEIL(....)
=Rechts(...)

wenn nicht, solltest du diese Funktionen kennenlernen
die kann man auch in Makros verwenden, auf Englisch heissen die  left, mid, right


VG Juvee
Hallo Juvee

Ja die Funktionen kenne ich.
Im Nachhinein muss ich gestehen, dass ich jetzt beim selber versuchen gemerkt habe, dass ich es ein wenig besser erklären müsste  Confused

Also ich habe ein Userform, mit Hilfe eines Barcodescanners lese ich die Barcodes (welche immer aus 6 Ziffern bestehen) in ComboBox1 ein.
Sobald ich jedoch zwei Barcodes einscanne soll er mir zwischen den Zahlen, welche wie gesagt aus 6 Ziffern bestehen, ein "/" setzen um diese zu trennen.

Somit müsste dann zB beim einlesen von 3 Barcodes die Zahl in ComboBox1 wie folgt aussehen 123456/123456/123456

Hoffe ich konnte es verständlich erklären.

Lg Primo
=ERSETZEN(ERSETZEN(A1;13;0;"/");7;0;"/") alle Versionen
=TEXTVERKETTEN("/";;TEIL(A1;ZEILE(1:3)*6-5;6)) ab xl2019
=TEXTVERKETTEN("/";;TEIL(A1;SEQUENZ(3;;1;6);6)) ab xl2021

entspr. umzusetzen in VBA
Hallo

hier mal ein Beispiel, wenn die Box verlassen wird

Code:
Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    With Me.ComboBox1
        Select Case Len(.Value)
        Case 12
            .Value = Left(.Value, 6) & "/" & Mid(.Value, 7, 6)
        Case 18
            .Value = Left(.Value, 6) & "/" & Mid(.Value, 7, 6) & "/" & Mid(.Value, 13, 6)
       
        Case Else
            MsgBox "Längen-Fehler Eingabe"
        End Select
    End With
End Sub


LG UweD
Da du dich ohnehin in VBA bewegst, wäre eine VBA-basierte Lösung naheliegend:

Code:
Option Explicit

Function AddSlashes(ByVal myString As String)
Dim myStringNew   As String: myStringNew = String(Len(myString) + Len(myString) \ 6 - 1, "/")
Dim i             As Byte

For i = 0 To Len(myString) \ 6 - 1
   Mid(myStringNew, i + i * 6 + 1, 6) = Mid(myString, i + i * 5 + 1, 6)
Next i

AddSlashes = myStringNew
End Function


Sub test()
msgbox AddSlashes(myString:="123456123456123456123456")
End Sub
Danke euch allen

Die Lösung von UweD passt perfekt, Danke dir. Wusste nicht, dass es ein Exit für die ComboBoxen gibt.

EarlFred, deine Lösung werde ich in Ruhe nächste Woche testen  Blush

Ich wünsche euch allen ein schönes Wochenende.

LG Primo