Website-Icon eKiwi-Blog.de

VBA String, Text ersetzen (Replace-Funktion)

VBA - Visual Basic for Application

VBA ist wunderbar, um verschiedene Dinge in der Microsoft Office-Welt zu automatisieren und sich ein paar schöne Hilfsmittel zu schaffen für ein effektiveres Arbeiten.

Eine typischer Fall, der nicht nur in VBA auftritt, sondern auch in vielen anderen Programmiersprachen, ist das Ersetzen eines Textes durch einen anderen Text. Das Ersetzen kann dabei vollständig erfolgen, oder es soll im Orignal-String nur ein Substring (Teiltext) ersetzt werden. Das könnte zum Beispiel eine Dateiendung in einem Dateinamen sein, die substituiert werden soll.

Replace-Funktion Parameter erläutert

Dafür gibt es im VBA die Replace-Funktion, welche die folgenden Parameter und Rückgabewerte aufweist.

Parameter der Replace-Funktion

Expression

Das ist der originale String/Text, welcher nach einem anderen String durchsucht werden soll.

Find

Das ist der gesuchte Text oder Textfragment (Substring), welcher in dem orginalen Text gefunden werden soll.

Replace

Das ist der Text mit dem der gesuchte Text ersetzt werden soll.

Bestseller Nr. 1

Start

Das ist ein optionaler Parameter. Hier kann man bestimmen, an welcher Stelle/Position im originalen Text mit dem Suchen und Ersetzen begonnen werden soll. Es handelt sich um ein Zahlenwert. Der erste Buchstabe beginnt bei 1. Dies ist etwas ungewöhnlich, da bei anderen Programmiersprachen immer bei null begonnen wird. Der Standardwert ist 1.

Count

Auch ein optionaler Parameter. Kommt der gesuchte Substring mehrmals im originalen Text vor, so kann man hier festlegen, wie oft der Substring ersetzt werden soll. Das ist praktisch, wenn man nur das erste Vorkommen eines Strings ersetzen möchte.

Compare

Selten benötigt man diesen Zahlenparameter, der die Vergleichsmethode festlegt. Der Standardwert genügt hier. Ansonsten gibt es

[-1] vbUseCompareOption

Bei Verwendung dieses Parameters muss eine Option-Compare-Anweisung der jeweiligen Prozedur vorangestellt werden.

[0] vbBinaryCompare

Es wird die binäre Repräsentation von gesuchten und durchsuchten String miteinander verglichen.

[1] vbTextCompare

Es wird ein Textvergleich zwischen gesuchten und durchsuchten String durchgeführt.

[2] vbDatabaseCompare

Wird nur in Microsoft Access verwendet für Vergleiche innerhalb von Datenbanken

Rückgabewert/Return

Der Rückgabewert ist der neue String mit den ersetzten Parametern.

Anwendungsbeispiele Replace-Funktion im VBA

Einfaches Beispiel ohne optionale Parameter

Hier werden alle gefundenen Substrings durch den zu ersetzenden Text substituiert.

Private Sub ReplaceExample1()
  Dim strOriginal As String
  Dim strSearch As String
  Dim strReplace As String
  Dim strNew As String

  strOrignal = "Meine Oma fährt im Hühnerstall Motorrad!"
  strSearch = "Motorrad"
  strReplace = "Dreirad"

  strNew = Replace(strOrignal, strSearch, strReplace)
  'Ausgabe in Direktfenster
  Debug.Print strNew
End Sub
Output/Ergebnis: Meine Oma fährt im Hühnerstall Dreirad!

Nur bestimmte Anzahl im String ersetzen

Bei diesem Beispiel wird nur ein ein Vorkommen des gesuchten Text ersetzt, da der optionale Parameter Count definiert wurde.

Private Sub ReplaceExample2()
Dim strOriginal As String
Dim strSearch As String
Dim strReplace As String
Dim strNew As String

strOrignal = "Gibst Du Opi Opium, bringt Opium Opi um!"
strSearch = "Opi"
strReplace = "Omi"

strNew = Replace(strOrignal, strSearch, strReplace, Count:=1)

Debug.Print strNew
End Sub
Output/Ergebnis: Gibst Du Omi Opium, bringt Opium Opi um!

String ab bestimmter Position durchsuchen

Diese Beispiel zeigt, wie ein String ab einer bestimmten Positione (20) durchsucht wird und die Vorkommen der gesuchten Zeichenkette ersetzt werden. Es wird dann auch nur der String ab der Startposition zurückgegeben.

Private Sub ReplaceExample3()
Dim strOriginal As String
Dim strSearch As String
Dim strReplace As String
Dim strNew As String

strOrignal = "Gibst Du Opi Opium, bringt Opium Opi um!"
strSearch = "Opium"
strReplace = "Omi"

strNew = Replace(strOrignal, strSearch, strReplace, Start:=20)

Debug.Print strNew
End Sub
Output/Ergebnis: bringt Omi Opi um!

Letzte Vorkommen einer Zeichenfolge ersetzen

Die optionalen Parameter Count und Start eignen sich nicht besonders gut, um das letzte Vorkommen eines Zeichens oder Zeichenkette zu ersetzen, da man nie weiß wie lang der orignale String ist. Um das letzte Vorkommen einer Zeichenkette in einem String zu ersetzen, muss man sich der Funktion strReverse bedienen. Diese dreht die Zeichenfolge einfach um, als ob man diese rückwärts lesen würde. Aus unserem “Opi” wird dann “ipO”. So kann man eine Ersetzung von hinten vornehmen.

Private Sub ReplaceExample4()
Dim strOriginal As String
Dim strSearch As String
Dim strReplace As String
Dim strNew As String

strOrignal = "Gibst Du Opi Opium, bringt Opium Opi um!"
strSearch = "Opi"
strReplace = "Omi"

strNew = StrReverse(Replace(StrReverse(strOrignal), StrReverse(strSearch), StrReverse(strReplace), Count:=1))

Debug.Print strNew
End Sub
Output/Ergebnis: Gibst Du Opi Opium, bringt Opium Omi um!
Bestseller Nr. 1
Bestseller Nr. 2
Die mobile Version verlassen