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.
Schauen wir uns als Beispiel die folgende Tabelle an.
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
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.
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.
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.
guten tag, wie ändere ich das, das man das nur in einer spalte macht?
Hallo Tim,
definieren einfach die Spalte anstatt
UsedRange
zum BeispielTabelle1.Columns(1)
.Viele Grüße
Denis
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
Moin Moin!
Danke für den Tipp, habe den Beitrag angepasst.
Viele Grüße
Denis
Moin Denis!
Danke für die Ergänzung des Artikels!
Ist imo nicht selbstverständlich, dass ein Artikel „lebt“.
Best regards
Ralf
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
und wie würde das aussehen, wenn das nur in einer ei`nzigen Zelle machen sollte
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!
Einfach die beiden Zeilen tauschen. Also zunächst „USA“ suchen und ersetzen und erst anschließend „US“
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..