Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Replace Funktion erweitern
#21
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
Antworten Top
#22
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!
Antworten Top
#23
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
Antworten Top
#24
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
Antworten Top
#25
Hallo Stefan,
das ging ja fix. Danke schon mal für die Super Lösung.
Antworten Top
#26
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?
Antworten Top
#27
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)
Antworten Top
#28
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.
Antworten Top
#29
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
Antworten Top
#30
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
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste