Vba: tekens in een string vervangen
U kunt de methode Replace() in VBA gebruiken om tekens in een tekenreeks te vervangen.
Deze methode gebruikt de volgende basissyntaxis:
Vervangen(uitdrukking, zoeken, vervangen, starten, tellen)
Goud:
- expression : De tekenreeks waarin u de tekens wilt vervangen
- find : De tekenreeks die moet worden gevonden
- vervangen : De tekenreeks die als vervanging moet worden gebruikt
- start ( optioneel ) : de startpositie in de tekenreeks waarnaar moet worden gezocht
- count ( optioneel ) : Het aantal uit te voeren vervangingen
De volgende voorbeelden laten zien hoe u deze methode in de praktijk kunt gebruiken met de volgende lijst met tekenreeksen in Excel:
Voorbeeld 1: Gebruik VBA om alle tekens in een tekenreeks te vervangen (hoofdlettergevoelig)
Laten we zeggen dat we „dit“ in elke string willen vervangen door „THAT“.
We kunnen hiervoor de volgende macro maken:
Sub ReplaceChar() Dim i As Integer For i = 2 To 8 Range(" B " & i) = Replace(Range(" A " & i), " this ", " THAT ") Next i End Sub
Wanneer we deze macro uitvoeren, ontvangen we de volgende uitvoer:
Kolom B geeft elk van de tekenreeksen in kolom A weer, waarbij elke keer dat ‚dit‘ voorkomt, wordt vervangen door ‚DAT‘.
Houd er rekening mee dat deze vervanging hoofdlettergevoelig is.
Dat wil zeggen dat elk voorkomen van “dit” wordt vervangen, maar elk voorkomen van “dit” wordt met rust gelaten.
Voorbeeld 2: Gebruik VBA om alle tekens in een string te vervangen (niet hoofdlettergevoelig)
Laten we zeggen dat we „dit“ (ongeacht het hoofdlettergebruik) willen vervangen door „THAT“ in elke string.
We kunnen hiervoor de volgende macro maken:
Sub ReplaceChar() Dim i As Integer For i = 2 To 8 Range(" B " & i) = Replace(LCase(Range(" A " & i)), " this ", " THAT ") Next i End Sub
Wanneer we deze macro uitvoeren, ontvangen we de volgende uitvoer:
Kolom B geeft elk van de tekenreeksen in kolom A weer, waarbij elke keer dat ‚dit‘ voorkomt, wordt vervangen door ‚DAT‘.
Merk op dat deze vervanging niet hoofdlettergevoelig is .
Dat wil zeggen dat elke keer dat ‚dit‘ voorkomt (al dan niet met een hoofdletter geschreven) wordt vervangen.
We konden deze hoofdletterongevoelige vervanging uitvoeren door de LCase- methode te gebruiken om eerst elke tekenreeks in kolom A naar kleine letters te converteren voordat in elke tekenreeks naar „this“ werd gezocht.
Voorbeeld 3: Gebruik VBA om de eerste N exemplaren van een teken in een tekenreeks te vervangen
Stel dat we in elke string alleen de eerste keer dat „this“ voorkomt (ongeacht de hoofdletters) willen vervangen door „THAT“.
We kunnen hiervoor de volgende macro maken:
Sub ReplaceChar() Dim i As Integer For i = 2 To 8 Range(" B " & i) = Replace(LCase(Range(" A " & i)), " this ", " THAT ", Count:=1) Next i End Sub
Wanneer we deze macro uitvoeren, ontvangen we de volgende uitvoer:
Kolom B geeft elk van de tekenreeksen in kolom A weer, waarbij alleen de eerste vermelding van ‚dit‘ wordt vervangen door ‚DAT‘.
Houd er rekening mee dat we Count:=1 hebben gebruikt om alleen het eerste exemplaar van een specifieke tekenreeks te vervangen, maar u kunt 1 vervangen door elke waarde waarmee u de eerste n exemplaren van een specifieke tekenreeks wilt vervangen.
Opmerking : u kunt hier de volledige documentatie voor de VBA Replace -methode vinden.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken kunt uitvoeren met VBA:
VBA: het aantal tekens in een string tellen
VBA: hoe controleer je of een string een andere string bevat?
VBA: cellen tellen met specifieke tekst