Sie haben eine geschlossene Textmarke und wollen diese füllen. Beim Füllen wird aber die Textmarke überschrieben, ist also gelöscht. Deshalb sollte man diese am besten gleich wieder neu setzen.
Das ist mit VBA eine Kleinigkeit, wobei es nur mit geschlossenen Textmarken funktioniert, weil nur geschlossene Textmarken beim Füllen überschrieben und dadurch gelöscht werden.
Für dieses Beispiel benutzt man die geschlossene Textmarke am besten als Range-Objekt.
Es gibt verschiedenen Methoden, dies mit VBA zu realisieren. Sie können zunächst die einfache Methode verwenden:
Hier wird der gesamte Vorgang in einer Prozedur ausgeführt. Dieser Code muss also für jede Textmarke wieder neu geschrieben werden, was bei vielen Textmarken langen Code mit viel Kopieren und Ändern ergeben kann.
Es geht natürlich einfacher, wenn man den eigentlichen Code in eine Funktion schreibt und nur den Aufruf in der Prozedur belässt. Dadurch kann die Funktion immer wieder benutzt werden und der Codeteil muss nicht nochmal geschrieben werden.
Zunächst der Aufruf selbst:
Beim Aufruf wird der Rückgabewert der Funktion abgefragt. Nur wenn das Füllen erfolgreich war, wird ein True zurückgegeben, ansonsten wird als Fehlermeldung die Messagebox eingeblendet.
Und hier steht dann die Funktion selbst, die in der Prozedur aufgerufen wird:
Sie sehen, dass der Code in der Funktion sich praktisch nicht verändert hat, es wurden nur die Variablen umbenannt. Jetzt müssen Sie nur noch für jede Textmarke den Aufruf ausführen.
Wir haben hier eine kleine Fehlerroutine eingebaut, falls es die Textmarke nicht im Dokument gibt.