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