VBA – Die Funktion Ersetzen – Zeichenkette ersetzen
In this Article
In diesem Tutorial zeigen wir Ihnen, wie Sie die VBA-Funktion Replace zum Ersetzen von Textzeichenketten verwenden können.
Die Replace-Funktion
Die VBA-Funktion Replace ersetzt eine Teilzeichenkette durch eine andere.
Sub Replace_Beispiel_1()
MsgBox Replace("ABCABCABC", "A", "!")
'Das Ergebnis lautet: "!BC!BC!BC"
MsgBox Replace("Ich mag rosa, rot und schwarz", "rosa", "lila")
'Das Ergebnis lautet: "Ich mag lila, rot und schwarz"
MsgBox Replace("A, B, C, A, B, C, A, B, C", ", ", ",")
'Das Ergebnis lautet: "A,B,C,A,B,C,A,B,C"
MsgBox Replace("ABCABCABC", "ABC", "!")
'Das Ergebnis lautet: "!!!"
MsgBox Replace("ABCABCABC", "ABc", "!")
'Das Ergebnis lautet: "ABCABCABC"
MsgBox Replace("ABCABCABC", "ZBC", "!")
'Das Ergebnis lautet: "ABCABCABC"
End Sub
Anfangsposition
Durch Zuweisung einer Anfangsposition können Sie angeben, mit welcher Zeichenposition begonnen werden soll (Standard = 1).
Sub Replace_Beispiel_2()
MsgBox Replace("ABCABCABC", "A", "123") 'Das Ergebnis lautet: "123BC123BC123BC"
MsgBox Replace("ABCABCABC", "A", "123", 2) 'Das Ergebnis lautet: "BC123BC123BC"
MsgBox Replace("ABCABCABC", "A", "123", 7) 'Das Ergebnis lautet: "123BC"
MsgBox Replace("ABCABCABC", "A", "123", 8) 'Das Ergebnis lautet: "BC"
MsgBox Replace("ABCABCABC", "ABC", "!@") 'Das Ergebnis lautet: "!@!@!@"
MsgBox Replace("ABCABCABC", "ABC", "!@", 2) 'Das Ergebnis lautet: "BC!@!@"
MsgBox Replace("ABCABCABC", "ABC", "!@", 6) 'Das Ergebnis lautet: "C!@"
MsgBox Replace("ABCABCABC", "ABC", "!@", 7) 'Das Ergebnis lautet: "!@"
MsgBox Replace("ABCABCABC", "ABC", "!@", 8) 'Das Ergebnis lautet: "BC"
End Sub
Nur einige Vorkommen ersetzen
Sie können auch angeben, wie viele Vorkommen der Teilzeichenkette ersetzt werden sollen (Standardwert = Alle)
Sub Replace_Beispiel_3()
MsgBox Replace("ABCABCABC", "A", "12") 'Das Ergebnis lautet: "12BC12BC12BC"
MsgBox Replace("ABCABCABC", "A", "12", , 1) 'Das Ergebnis lautet: "12BCABCABC"
MsgBox Replace("ABCABCABC", "A", "12", , 2) 'Das Ergebnis lautet: "12BC12BCABC"
MsgBox Replace("ABCABCABC", "A", "12", , 3) 'Das Ergebnis lautet: "12BC12BC12BC"
MsgBox Replace("ABCABCABC", "A", "12", , 5) 'Das Ergebnis lautet: "12BC12BC12BC"
MsgBox Replace("ABCABCABC", "A", "12", 3, 1)
'Das Ergebnis lautet: "C12BCABC"
'Wir haben A durch 12 ersetzt, und zwar 1 Mal ab Position 3 in der ursprünglichen Zeichenkette.
End Sub
Zwischen Groß- und Kleinschreibung unterscheiden
Die Replace-Funktion unterscheidet standardmäßig zwischen Groß- und Kleinschreibung. Durch Hinzufügen des optionalen Parameters (vbTextCompare) können Sie die Groß-/Kleinschreibung außer Acht lassen. Hier müssen Sie auch die Anfangsposition der Suche festlegen.
Sub Replace_Beispiel_4()
MsgBox Replace("ABcABCABc", "ABc", "12")
'Das Ergebnis lautet: "12ABC12"
MsgBox Replace("ABcABCABc", "ABc", "12", , , vbTextCompare)
'Das Ergebnis lautet: "121212"
'Wenn wir vbTextCompare verwenden, müssen wir die 2 anderen optionalen Argumente hinzufügen:
'start und count
MsgBox Replace("ABcABCABcABc", "ABc", "12", 3, 1)
'Das Ergebnis lautet: "cABC12ABc"
'Angefangen bei Position 3 und ABC nur 1 Mal ersetzt.
End Sub
Sie können auch ein Ersetzen ohne Berücksichtigung der Groß-/Kleinschreibung durchführen, indem Sie Option Compare Text am Anfang Ihres Moduls hinzufügen:
Option Compare Text
Doppelte Anführungszeichen
Die Replace-Funktion kann die doppelten Anführungszeichen, die den Anfang und das Ende einer Zeichenkette markieren, ersetzen.
Die VBA-Funktion Chr kann ein Zeichen anhand seiner Nummer im Zeichensatz zurückgeben.
MsgBox Chr (34) 'Das Ergebnis lautet "
Oder
MsgBox Chr (64) 'Das Ergebnis lautet: @
Doppelte Anführungszeichen können innerhalb der Replace-Funktion mit „“““ oder der VBA-Funktion Chr (34) verwendet werden.
Sub Replace_Beispiel_5()
Dim StrEx As String
StrEx = "AB""AB"""
MsgBox StrEx 'Das Ergebnis lautet: AB "AB"
MsgBox Replace(StrEx, Chr (34), "12")
'Das Ergebnis lautet: AB12AB12
MsgBox Replace(StrEx, """", "DQ")
'Das Ergebnis lautet: "ABDQABDQ"
End Sub
Ersetzen des Zeilenumbruchs in einer Zelle
Die Replace-Funktion kann das Sonderzeichen für den Zeilenumbruch in einer Zelle finden und es entfernen oder durch ein Leerzeichen ersetzen. Das Sonderzeichen für den Zeilenumbruch kann mit der Tastenkombination Alt+Eingabe in eine Zelle eingegeben und mit der Funktion Chr (10) im VBA-Code anhand seiner Zeichensatznummer verwendet werden.
Sub Replace_Beispiel_6()
Dim StrEx As String 'Eine String-Variable definieren
'Den Wert der Zelle A2 im Arbeitsblatt Tabelle1 lesen
StrEx = ThisWorkbook.Worksheets("Tabelle1").Range("A2").Value
'Das Zeichen für den Zeilenumbruch, das mit Alt+Enter eingegeben wird, ist Chr (10) und ist unsichtbar.
'Diese Codezeile ersetzt dieses Zeichen durch ein Leerzeichen
StrEx = Replace(StrEx, Chr (10), " ")
'Den Ersatzwert in Zelle B2 im Arbeitsblatt Tabelle1
ThisWorkbook.Worksheets("Tabelle1").Range("B2").Value = StrEx
End Sub