Hallo liebe Mitglieder,
ich bin VBA-Anfänger und gerade an meine Grenzen gestoßen... :D
Folgendes will ich erreichen: Als Lektorin muss ich oftmals die gleichen Fehler in diversen Texten korrigieren. Deswegen dachte ich mir, es wäre schön ein paar „Standardfehler“ in ein Makro in Word zu packen, sodass diese Fehler automatisch und auf einmal behoben werden. Soweit so gut.
Ich habe also diverse Strings angelegt, mit den zu suchenden und zu ersetzenden Wörtern. Zum Beispiel ist suchen_1 = " waren präsentiert" und ersetzen_1 = "wurden präsentiert" oder suchen_2 = "präsentiert waren" und ersetzen_2 = "präsentiert wurden" usw. Das geht von suchen_1 bis suchen_20 und ebenso bei ersetzen_. Jetzt wollte ich aber nicht 20-mal Suchen und Ersetzen in das Makro kopieren, sondern wollte das ganze mit einer for...next...-Funktion lösen.
Hier jetzt mein Problem. Wie kann ich denn für den Suchtext und den Ersetzungstext das suchen_ mit meiner Integer (i) der Schleife verknüpfen, sodass er in jedem Durchlauf auch den richtigen Suchtext nimmt? Ich dachte, ich könnte suchen_ & i kombinieren, aber das funktioniert offenbar nicht, da kommt gar nichts. Bei suchen_ + i kommt nur i als Suchtext.
Meine Lösungsversuche waren eher Bescheiden...
- ich habe es mit "suchen_" & i probiert, aber wie erwartet, ist der Suchtext dann "suchen_1" und nicht der Wert der sich hinter dem String versteckt.
- dann dachte ich, vielleicht muss ich "suchen_" und "ersetzen_" auch als String definieren, aber das war es auch nicht.
- Der Versuch, wie in dem unten aufgeführten Code, den Suchtext im Vorfeld zu verbinden und das Ganze dann hinter .text auszugeben, hat auch nicht funktioniert.
- Google und Foren haben mir auch nicht weiter geholfen (vielleicht auch, weil ich gar nicht genau weiß, wonach ich suche).
Ich hoffe, dass das einigermaßen verständlich erklärt war und mir hier jemand weiterhelfen kann. Es ist sicher nur eine kleine Sache, aber ich weiß nicht, was ich tun muss. :D
Vielen Dank und liebe Grüße
Jennifer
Dim i As Integer
For i = 1 To 30
Suchtext = suchen_ & i
Ersetzung = ersetzen_ & i
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = Suchtext
.Replacement.Text = Ersetzung
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Next i
|