Excel VBA – Zeichen ersetzen mit Replace

Excel VBA - Zeichen ersetzen mit Replace

Dieser Beitrag ist ein Teil der VBA Grundlagen Serie.
In diesem How-To zeige ich Ihnen die Replace Funktion. Damit können wir in einem VBA Makro einzelne Zeichen in einer Zeichenkette ersetzen.

111 VBA Makros die Ihr Leben leichter machen. Egal ob Sie Einsteiger oder fortgeschrittener Anwender sind – in diesem Buch finden Sie Lösungen für Ihre alltäglichen Aufgaben. Keine Vorkenntnisse notwendig.

Schauen wir uns als Beispiel die folgende Tabelle an.
Ausgangstabelle
In dieser wollen wir alle Schrägstriche durch Bindestriche ersetzen. Dazu legen wir ein VBA Makro an. Wechseln Sie mit der Tastenkombination ALT+F11 in die Entwicklungsumgebung und fügen Sie ein neues Modul ein.
Als Erstes legen wir eine Variable für die Schleife an. Die Deklaration sieht wie folgt aus:

Sub Ersetzen()
Dim Zelle As Range

End Sub

Danach schreiben wir eine Schleife um alle Zellen in dem verwendeten Bereich zu überprüfen. Diese arbeitet alle Zellen, Zelle für Zelle, ab.

Sub Ersetzen()
Dim Zelle As Range

For Each Zelle In Tabelle1.UsedRange

Next Zelle
End Sub

Unternehmensplanung mit SAP BPC

111 VBA Makros die Ihr Leben leichter machen

Wollen Sie Ihre langweiligen Routineaufgaben loswerden? Möchten Sie Excel an Ihre Bedürfnisse anpassen, Berechnungen automatisieren, eigene Dialogfelder erstellen und vieles mehr? Dieses Buch zeigt Ihnen, wie Sie Ihre Aufgaben schnell und einfach mit VBA erledigen.

Innerhalb der Schleife modifizieren wir dann den jeweiligen Zellwert mithilfe der Replace Funktion. Im ersten Argument geben wir an, wo die Zeichen ersetzt werden sollen. Danach geben wir das zu ersetzende Zeichen an. Schließlich geben wir das Ersatzzeichen an. Das finale Coding sieht dann wie folgt aus:

Sub Ersetzen()
Dim Zelle As Range

For Each Zelle In Tabelle1.UsedRange

Zelle.Value = Replace(Zelle.Value, "/", "-")

Next Zelle
End Sub

Alternativ können Sie auch statt der Funktion die Replace Methode nutzen. (Danke an Ralf für den Tipp.) Damit erübrigt sich die Schleife und die Performance steigt. Das Coding würde dann so aussehen:

Sub ErsetzenAlternative()

Tabelle1.UsedRange.Replace "/", "-", xlPart

End Sub

Führen Sie nun das Makro mit der F5 Taste aus. Alle Zeichen wurden ersetzt.
Alle Zeichen wurden ersetzt
Die Beispiel Excel Datei mit dem sofort einsetzbaren Makro und 111+ andere Makros, die Ihr Leben leichter machen, finden Sie hier.

Beeindrucke deinen Chef mit coolen Excel Tricks!

  • Lasse dich von deinen Kollegen nicht abhängen!
  • Spare Zeit und nutze diese für angenehmere Dinge
  • Steigere deine Produktivität und Effizienz
  • Es ist leicht - In meinem Newsletter gebe ich Schritt für Schritt Anleitungen die jeder versteht
  • Bei der Anmeldung zu meinem Newsletter erhälst du das Buch „Excel Tricks die deinen Chef beeindrucken“ als Willkommensgeschenk.
20 Excel Tricks

Jetzt anfordern!

* Pflichtfeld
 
Kein SPAM. 100% sicher.

Quellen und weiterführende Literatur:
Replace Methode
Replace Funktion
Bernd Held – VBA mit Excel: Das umfassende Handbuch

Falls Ihnen dieser Beitrag weitergeholfen hat, wäre es eine sehr nette Anerkennung meiner Arbeit wenn Sie z.B. Ihre Bücher über Amazon bestellen würden. Wenn Sie ein Produkt kaufen, erhalte ich dafür eine Provision. Für Sie ändert sich am Preis des Produktes gar nichts. Ich möchte mich an dieser Stelle jetzt schon für Ihre Unterstützung bedanken.

10 Kommentare
  1. Ralf
    Ralf sagte:

    Moin!
    Ich empfinde die Replace-Funktion als hier nicht zielführend.
    Sowas erschlägt die Range.Replace-Methode in einem Rutsch, so ganz ohne Schleife und als Einzeiler:
    Tabelle1.Columns(„A“).Replace „/“, „-„, xlPart

    Freundliche Grüße
    Ralf

    Antworten
      • Ralf
        Ralf sagte:

        Moin Denis!
        Danke für die Ergänzung des Artikels!
        Ist imo nicht selbstverständlich, dass ein Artikel „lebt“.

        Best regards
        Ralf

        Antworten
    • Erich Körber
      Erich Körber sagte:

      Hallo Ralf,
      ich suche eine Lösung für folgendes Problem: In jeder Zelle der Spalte C steht Text, bei dem der Text von normal auf italics wechselt. An der Stelle soll vor dem ersten Kursivzeichen ein Tab-Zeichen ^t eingefügt werden. Trotz langer Suche bisher keine Lösung gefunden.
      Vielen Dank für eine Rückmeldung
      Erich Körber

      Antworten
  2. sheppard
    sheppard sagte:

    Hallo,

    wenn man diesen Code

    Tabelle1.UsedRange.Replace „/“, „-„, xlPart

    für ganze Wörter nutzt, stoße ich leider auf ein Problem.

    Beispiel:

    Tabelle1.UsedRange.Replace „US“, „1“, xlPart
    Tabelle1.UsedRange.Replace „USA“, „2“, xlPart
    ——-
    Vor Ausführung: —— Nach Ausführung:
    Zeile A: US —– 1
    Zeile B: USA —– 1A

    In Zeile „A“ passt es.
    Leider würde er in Zeile „B“ schon mit dem ersten Schritt das „US“ aus „USA“ überschreiben, wodurch nach Ausführung nur „1A“ stehen bleibt und kein „USA“ mehr zu „2“ geändert werden kann.

    Ich habe das Problem durch „xlcomplete“ oder „all“ versucht zu lösen, aber leider wird mir dann ein Laufzeitfehler angezeigt (9).

    Kann mir da jemand bitte weiterhelfen?

    Danke!

    Antworten
  3. Michael
    Michael sagte:

    Hallo, ich habe diesen Beitrag gefunden, gerade der Tipp von Ralf hat mir sehr geholfen.
    Geht auch ungleich ein Wert? Bei meinem Problem „s“.
    Ich habe schon viel im Internet gesucht, aber nichts gefunden.
    Ich habe eine Tabelle in der Reihen mit verschiedenen Buchstaben gefüllt werden. viele m, e, p, a oder f’s ich möchte alles was NICHT „s“ ist mit einem Rutsch löschen. Das mache ich z.Z mit einer Schleife. Aber mit 365 Spalten und 40 Zeilen dauert das ein paar Sekunden..

    Antworten

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.