Registriert seit: 11.04.2014
Version(en): Office 2007
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"
Gruß Stefan
Win 10 / Office 2016
Registriert seit: 25.09.2014
Version(en): 2013
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!
Registriert seit: 25.09.2014
Version(en): 2013
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
Registriert seit: 11.04.2014
Version(en): Office 2007
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
Gruß Stefan
Win 10 / Office 2016
Registriert seit: 25.09.2014
Version(en): 2013
Hallo Stefan,
das ging ja fix. Danke schon mal für die Super Lösung.
Registriert seit: 25.09.2014
Version(en): 2013
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?
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
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.
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 25.09.2014
Version(en): 2013
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.
Registriert seit: 25.09.2014
Version(en): 2013
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
Registriert seit: 11.04.2014
Version(en): Office 2007
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
Gruß Stefan
Win 10 / Office 2016