Clever-Excel-Forum

Normale Version: Replace Funktion erweitern
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4 5
Hallo Kathrin,

stehen die dreistelligen Zahlen am Anfang des Textes, oder in der Mitte oder am Ende? Was soll mit zweistelligen oder vierstelligen passieren? Können im Text die dreistelligen Zahlen mehrmals vorkommen? Mal zum Testen ein Pattern.
Code:
re.Pattern = "\D\d{3}\D"
Hallo Stefan,
vielen Dank für die prompte Hilfe. Werde den Pattern morgen ausprobieren.
Brauche aber alles. Anfang Ende Mitte. Also poste weiter.
Werde vielleicht noch eigenen Thread öffnen, da ich noch viel mehr Fragen diesbezüglich habe und
keine Lust und Zeit die ganze Sache gründlich zu lernen.

Also besten Dank!
Hallo ihr lieben Computerverrückten,

ich habe ein kleines funktionierendes Makro zum Ersetzen von Ausdrücken:

Code:
Sub Ersetzen()
Columns(1).Select
Selection.Replace What:="Begriffe1", Replacement:="BegriffXY"
Selection.Replace What:="Begriffe2", Replacement:="Begriffzz"
...
...
Range("A1").Select

End Sub

Da die Liste der zu ersetzenden Ausdrücke tierisch lang ist, wollte ich mal fragen ob man die ganze Angelegenheit
irgendwie abkürzen kann. Ob man vielleicht die zu ersetzenden Ausdrücke samt ihrer neuen Bedeutung in Listen zusammenfassen kann.

Danke für eure Hilfe und Bemühungen
Hallo,

versuchs mal so

Code:
Sub Ersetzen()
Dim vntWas As Variant, vntErsetzen As Variant
Dim lngC As Long


vntWas = Array("Begriffe1", "Begriffe2")
vntErsetzen = Array("BegriffXY", "Begriffzz")
Columns(1).Select
For lngC = 0 To UBound(vntWas)
  Selection.Replace What:=vntWas(lngC), Replacement:=vntErsetzen(lngC)
Next lngC
Range("A1").Select

End Sub
Hallo Stefan,
das ging ja fix. Danke schon mal für die Super Lösung.
Hallo Stefan,

Deine Idee ist ja super aber leider funktioniert es bei mir nicht. Der

Compiler hängt sich bei folgender Zeile auf:

Selection.Replace What:=vntWas(lngC), Replacement:=vntErsetzen(lngC)

Was muss noch verändert werden?
Hallo,

falls die Fehlermeldung etwas wie "Index außerhalb" enthält, hast Du eventuell Option Base 1 in Deinem Modul programmiert.
Entsprechend gibt es kein array(0) und der Fehler kommt.
Hallo André,
ich weiß als Anfänger zwar nicht was du meinst. Aber zur Zeit funktioniert es.(Plötzlich hokuspokus!)
Bei erneuten Problemen komme ich später gerne nochmal auf deinen Rat zurück.

Trotzdem könntest du als erfahrner VBA Profi vielleicht weiter helfen.
Stefan hatte die Angelegenheit ja mit 2 Felder geschrieben. Das kann bei vielen Begriffen aber schnell unübersichtlich werden.
Wie packe ich die ganze Sache in 1 Feld,
das dann so aussieht:

vbFeld = ("Was ersetzen 1", "Ersatz 1", "Was ersetzen 2", "Was ersetzen 3", "Ersatz 3", usw. )

so habe ich die Begriffe immer paarweise nebeneinander.
Hallo Büroklammer,

wie wäre es damit:

Code:
Sub ErsetzenEindimensional()
On Error Resume Next
Range("A1").Select
vntWas = Array("Vorname", "Nachname", "Dobermann", "Hund", "Messer", "Gabel", "Tasse", "Teller")

Columns(1).Select
For LngC = 0 To UBound(vntWas)
If LngC Mod 2 = 0 Then
  Selection.Replace What:=vntWas(LngC), Replacement:=vntWas(LngC + 1)
End If
Next LngC
Range("A1").Select
End Sub
Hallo Kathrin,

bei einer For-Schleife könnte man auch mit Step arbeiten.

Code:
For LngC = 0 To UBound(vntWas) Step 2
  Selection.Replace What:=vntWas(LngC), Replacement:=vntWas(LngC + 1)
Next LngC
Seiten: 1 2 3 4 5