String an sechster und siebter Stelle ändern

  • Excel

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Luke2805.

    String an sechster und siebter Stelle ändern

    Hallo VBA Gurus,

    ich habe eine Tabelle mit etwa 200 Zeilen. In Splate D ist der String den ich an der 6. und 7. Stelle umbenennen will.

    Z.B.:Ich habe den Wert B1234567890 ich möchte aber, dass der Wert B123456xx90 heisst.

    Wie könnte ich das umsetzen ?( ?

    Vorab Danke für eure Hilfe

    MfG

    Lukas
    In Excel mit den Funktionen Links, Rechts und Teil, in VBA mit den Funktionen Left, Mid, Right.
    Zuerst den linken Teil auslesen, dann den rechten Teil und anschließend zusammensetzen mit der Ergänzung in der Mitte.
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).
    Hallo Luke,

    ich würde das so machen (es fehlt nur noch der Auslöser für das Durchlaufen des Programmes):

    Quellcode

    1. Dim zeile As Integer
    2. Dim Zelleninhalt As Variant
    3. zeile = 1 'Zeile ab der die 5&6 Stelle ersetzt werden soll
    4. Do While Tabelle1.Cells(zeile, 4) <> "" 'Solange bis in Tabelle1 Spalte 4 (D) eine leere Zelle gefunden wird
    5. Zelleninhalt = Tabelle1.Cells(zeile, 4) 'aktuellen Zelleninhalt einlesen
    6. Mid(Zelleninhalt, 6, 2) = "xx" 'ab der 6 Stelle 2 Stellen durch xx ersetzen
    7. Tabelle1.Cells(zeile, 4) = Zelleninhalt 'geänderten Zelleninhalt in Zelle schreiben
    8. zeile = zeile + 1 'nächste Zeile
    9. Loop


    Ohne Programm einfach wie Inopiae geschrieben hat in eine leere Zelle folgendes eingeben (Beispiel für Zeile1):
    =LINKS(D1;5) &"xx"&RECHTS(D1;4)
    allerdings wäre hier die Voraussetzung, dass die Länge der Zelleninhalte immer gleich ist.

    lg
    Free

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „FreeRider74“ ()

    :)

    Noch nicht ganz.
    hatte in der Zwischenzeit auch was ausprobiert.
    Es funktioniert, aber ich erhalte eine Fehlermeldung.

    Laufzeitfehler "5" Ungültiger Prozeduraufruf oder ungültiges Argument
    Woran liegt das?


    Visual Basic-Quellcode

    1. Sub test()
    2. Range("C2:C1000").Copy
    3. Range("D2:D1000").PasteSpecial
    4. Dim sText As Variant
    5. Set tb1 = Sheets("Tabelle1")anz1 = tb1.Cells(2, 4).CurrentRegion.Rows.Count
    6. For i = 2 To anz1
    7. sText = Cells(i, 4)
    8. Mid$(sText, 8, 2) = "XX"
    9. tb1.Cells(i, 4) = sText
    10. Next
    11. End Sub

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Luke2805“ ()

    Man solltest im Zweifelsfall auch mal die Online-Hilfe eines Programmes anschauen.
    Was passiert hier:
    Mid$(sText, 8, 2) = "XX"
    Hier soll einer Funktion ein Wert zugewiesen werden. Das kann nicht funtionieren.

    Hättest Du Dir mal die Funktion und deren Beispiel angeschaut, die ich Dir oben genannt habe, hättest Du die Lösung eigentlich finden müssen.

    Visual Basic-Quellcode

    1. sText=Left(sText,5) & "XX" & Mid(sText,8)


    @Freerider74: Das ist totaler Bullshit, was Du hier schreibst.
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).
    erstmal danke!
    muss zugeben, dass ichs nicht verstanden habe.
    Hab jetzt aber wahrscheinlich den Bogen raus!
    Hab deine Formel mal modifiziert und es mit dieser Variante versucht. Es funktioniert.

    Visual Basic-Quellcode

    1. sText = Left(sText, 7) & "XX" & Right(sText, 2)


    Ich brösel mal die obige Formel für mein Verständnis auf.

    sText ist die Variable, der ich einen Bereich zugewiesen habe.
    Left(sText, 7) ist der linke Bereich des Wertes bis einschließlich Zeichen 7.
    "XX" sind die Werte, die den Mittelteil überschreiben.
    Right(sText, 2)ist der linke Bereich des Wertes bis einschließlich des vorletzten Zeichens.


    Visual Basic-Quellcode

    1. sText=Left(sText,5) & "XX" & Mid(sText,8)

    Bei deiner Formel tue ich mich mit dem Verständnis etwas schwerer. ?( Bin Anfänger auf dem Gebiet.


    Du sagst zuerst dass der linke Bereich bis einschließlich Zeichen 5 geht.
    Die nächsten Zeichen sollen "XX" sein und dann kommt der mittel Teil ab Zeichen 8 und definierst keine länge (was auch nicht gewollt ist).


    Auf jeden Fall danke für die Hilfe!


    Seltsamer Weise hat der erste Versuch von mir, trotz des Laufzeitfehlers, das gemacht was ich wollte...... Kannst du mir vllt sagen wieso?