
37414
31.10.2019
2 fast gleiche VBA-Makros - eines funktioniert, das andere bringt eine Fehlermeldung
Hallo,
ich habe heute 2 fast gleiche VBA-Makros für Word 2016 erstellt.
Mit dem Makro "Kind" soll der Text "Ihr Kind / Ihre Kinder" ersetzt werden durch "Ihr Kind".
Mit dem Makro "Kinder" soll der Text "Ihr Kind / Ihre Kinder" ersetzt werden durch "Ihre Kinder".
Soweit... so gut...
Dann habe ich die beiden Makros in Word über "Menüband anpassen / Makros" in eine neue Gruppe unter START eingefügt (wie mehrere andere Makros auch schon).
Dort habe ich beide Makros dann umbenannt in "Kind" und "Kinder" und ihnen ein Icon verpaßt.
In meinem Word erscheinen die beiden Icons mit den beiden Makros jetzt im Reiter START.
Nun zum Problem:
Führe ich das Makro "Kinder" über das entsprechende Icon im Word-Menü aus, funktioniert alles einwandfrei. Mehrere Einträge werden korrekt ersetzt.
Führe ich jedoch das Makro "Kind" vom Word-Menü aus aus, erhalte ich eine Fehlermeldung (siehe Screenshot):

Seltsamer Weise funktioniert dieses Makro "Kind" aber problemlos, wenn ich es über das Word-Menü "Ansicht / Makros" manuell ausführe.
Hier mal der Code der beiden Makros:
Habt Ihr eine Idee, woran das Problem beim ausführen über die Menüband-Registerkarten im Word-Menü liegen könnte?
Wie gesagt... grds. funktionieren beide Makros.
Danke und Gruß,
imebro
ich habe heute 2 fast gleiche VBA-Makros für Word 2016 erstellt.
Mit dem Makro "Kind" soll der Text "Ihr Kind / Ihre Kinder" ersetzt werden durch "Ihr Kind".
Mit dem Makro "Kinder" soll der Text "Ihr Kind / Ihre Kinder" ersetzt werden durch "Ihre Kinder".
Soweit... so gut...
Dann habe ich die beiden Makros in Word über "Menüband anpassen / Makros" in eine neue Gruppe unter START eingefügt (wie mehrere andere Makros auch schon).
Dort habe ich beide Makros dann umbenannt in "Kind" und "Kinder" und ihnen ein Icon verpaßt.
In meinem Word erscheinen die beiden Icons mit den beiden Makros jetzt im Reiter START.
Nun zum Problem:
Führe ich das Makro "Kinder" über das entsprechende Icon im Word-Menü aus, funktioniert alles einwandfrei. Mehrere Einträge werden korrekt ersetzt.
Führe ich jedoch das Makro "Kind" vom Word-Menü aus aus, erhalte ich eine Fehlermeldung (siehe Screenshot):

Seltsamer Weise funktioniert dieses Makro "Kind" aber problemlos, wenn ich es über das Word-Menü "Ansicht / Makros" manuell ausführe.
Hier mal der Code der beiden Makros:
Sub Kind()
'
' Kind Makro
' Der Eintrag "Ihr Kind / Ihre Kinder" wird ersetzt durch "Ihr Kind"
'
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "Ihr Kind / Ihre Kinder"
.Replacement.Text = "Ihr Kind"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
---------------------------
Sub Kinder()
'
' Kinder Makro
' Der Eintrag "Ihr Kind / Ihre Kinder" wird ersetzt durch "Ihre Kinder"
'
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "Ihr Kind / Ihre Kinder"
.Replacement.Text = "Ihre Kinder"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
Habt Ihr eine Idee, woran das Problem beim ausführen über die Menüband-Registerkarten im Word-Menü liegen könnte?
Wie gesagt... grds. funktionieren beide Makros.
Danke und Gruß,
imebro
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 510605
Url: https://administrator.de/forum/2-fast-gleiche-vba-makros-eines-funktioniert-das-andere-bringt-eine-fehlermeldung-510605.html
Ausgedruckt am: 15.05.2025 um 00:05 Uhr
10 Kommentare
Neuester Kommentar

Zitat von @37414:
OK... aber wieso funktioniert das Makro "Kind" denn dann, wenn ich es manuell ausführe (also über "Ansicht / Makros / ausführen")?
MS Feature, wie so oft, je nach Kontext leitet Word da wohl von einer Klasse ab oder nicht. Wenn du den Namen brauchst, erstelle eine neue Klasse darin kannst du mit Namen schalten und walten wie du willst...OK... aber wieso funktioniert das Makro "Kind" denn dann, wenn ich es manuell ausführe (also über "Ansicht / Makros / ausführen")?

Zitat von @37414:
Aber... wie erstelle ich eine neue Klasse darin? Bin nicht so der VBA-Spezialist. Ab und zu mal ein Makro, das ist es schon was ich so mache
Brauchst du hier ja nicht zwingend, und wäre für dich auch Overkill, da du hier ja frei in der Wahl bist gebe den Sub's andere Namen und feddich!Aber... wie erstelle ich eine neue Klasse darin? Bin nicht so der VBA-Spezialist. Ab und zu mal ein Makro, das ist es schon was ich so mache
Dir hier jetzt OO Programmierung von Grund auf beizubringen würde echt zu weit führen, das kannst du dir auf einschlägigen Seiten aneignen.
https://excelmacromastery.com/vba-class-modules/

Zitat von @37414:
In den Word-Optionen bei "Menüband anpassen" kann ich doch dann die Namen wie gehabt wieder vergeben. Es reicht doch, wenn ich die Namen IM Script ändere... oder?
Wenn du den Namen der Prozedur im Code änderst musst du auch den Symbolleisten-Eintrag anpassen, denn der verweist ja noch auf die Prozedur mit dem alten Namen. Die Bezeichnung in der Symbolleiste ist unabhängig davon, der Name des Makros auf das der Eintrag verweist jedoch nicht.In den Word-Optionen bei "Menüband anpassen" kann ich doch dann die Namen wie gehabt wieder vergeben. Es reicht doch, wenn ich die Namen IM Script ändere... oder?