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.

Makro erweitern
#1
Guten Morgen zusammen,

ich möchte in meiner Tabelle gern diverse Zeichenfolgen durch andere ersetzen und habe folgendes Makro gefunden (Original = schwarze Schrift)

Sub ZeichenTauschen()
On Error Resume Next
Dim Zelle As Range
Dim SuchenNach As String
Dim ErsetzenDurch As String
SuchenNach = "." xxxxxxxxxxxxxxxxxx
ErsetzenDurch = "," xxxxxxxxxxxxxxxxx
SuchenNach = "y"
ErsetzenDurch = "z"
For Each Zelle In ActiveSheet.UsedRange
 Zelle.Value = Application.Substitute(Zelle.Value, SuchenNach, ErsetzenDurch)
Next Zelle
On Error GoTo 0
End Sub

Da es sich aber um mehrere Zeichenfolgen handelt, die ich durch jeweils andere ersetzen muß weiß ich jetzt nicht genau, ob ich das Makro "nach rechts oder nach unten erweitern muß". (rote und blaue Zeichen sind von mir...) Ich könnte mir vorstellen, daß ich es nach unten um die verschiedenen SuchenNach-ErsetzenDurch-Pärchen erweitern muß, wollte mich aber nochmal rückversichern. Falls das nach rechts geht, bräuchte ich eine kleinen Hinweis, trenne ich einfach nur per ";"?

Besten Dank für Euren kleinen Hinweis.
Eistee für alle!!!!
Gruß
Klaus


ich möchte in meiner Tabelle gern diverse Zeichenfolgen durch andere ersetzen und habe ein Makro gefunden
Antworten Top
#2
Zuerst mal hinterfrage ich die Sinnhaftigkeit - wieso nicht einfach mittels Strg+H Suchen und Ersetzen? Oder ist das eine regelmäßige Aufgabe?

Aber so wie du das angehen willst, funktioniert das nicht. Mit jeder weiteren Angabe von Suchen- bzw. Ersetzenbegriffen überschreibst du ja die vorhergehende Variable. Du benötigst also eine Schleife. Die Frage ist nun, wieviele Ersetzungen du hast und wo du die definieren willst. Das kann zB eine Tabelle sein (zB Spalte A Suchbegriff, Spalte B Ersetzungsbegriff). Oder du schreibst verschiedene Variablen, zB so

Code:
SuchenNach1 = "."
ErsetzenNach1 = ","
SuchenNach2 = "x"
ErsetzenNach2 = "y"

Das halte ich aber für keine gute Lösung, ich würde es über eine Hilfstabelle machen. Also, überleg dir das zuvor, bevor man wild drauflos programmiert.
Schöne Grüße
Berni
Antworten Top
#3
Hallo Berni

vielen Dank für deine schnelle Antwort.

Ja, die Sinnhaftigkeit ist auf jeden Fall gegeben - es sind regelmäßig wiederkehrende Änderungen, zu bearbeiten sind jeweils um die 10 Korrekturen. Also zuviel, um es jedesmal per Hand zu machen (und dabei ggf. noch etwas zu übersehen) und immer noch überschaubar genug, um es einmalig zu programmieren.

Da ich mit einer Vorlage arbeite, in die ich das Makro implementieren will, ist die Arbeit auf jeden Fall die Zeit wert, zumal ich dann - sollte eine neue Fehlerquelle auftauchen, das Makro ja einfach nur um das jeweilige Pärchen erweitern muß.

Insofern wäre die Pärchen1, Pärchen2 usw.-Variante durchaus gangbar für mich. Hört sich jedenfalls einfacher an als eine Hilfstabelle
Das probiere ich gleich mal aus!

Danke nochmal.
PS: keine Angst, ich programmiere da nicht drauflos, das hab ich gar nicht drauf :19:
Viele Grüße
Klaus
Antworten Top
#4
Hallo Klaus,

nimm doch einfach die Replace-Methode:
Sub ZeichenTauschen()
Cells.Replace ".", ",", xlPart
Cells.Replace "y", "z", xlPart
'...
End Sub
Gruß Uwe
Antworten Top
#5
Hi Uwe,
das sieht noch eine Spur einfacher aus.
Auch das werde ich probieren.
Vielen Dank auch Dir!
Klaus
Antworten Top


Gehe zu:


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