Sämtliche Textmarken (ausser einer) löschen

Hi,
mit der Prozedur

Sub test()
Dim tmp
For tmp = 1 To ActiveDocument.Bookmarks.Count
If Not ActiveDocument.Bookmarks(1).Name = „TM“ Then
ActiveDocument.Bookmarks(1).Delete
End If
Next
End Sub

möchte ich sämtliche Textmarken eines Dokuments mit Ausnahme der Textmarke „TM“ löschen. Die Schleife funktioniert, wenn alle anderen Textmarkennamen nicht mit „TM“ beginnen, sie funktioniert nicht, wenn es im Dokument außer „TM“ auch noch „TM1“ gibt. Wie ist die Schleife zu optimieren, damit nur die Textmarke „TM“ nicht gelöscht wird?
Gruß
Wilhelm

Hallo Wilhelm,

Du programmierst ja wirklich viel :wink:

Das Problem mit Deiner Schleife ist, dass sie immer nur Bookmark #1 abfragt. Wenn Deine Bookmarks nun etwa lauten: a1, a2, TM, TM1, dann löscht der Code die ersten beiden, so dass nur noch TM und TM1 bleiben. Das erste Element bleibt nun aber TM, so dass Deine Schleife keine weiteren Elemente löscht, weil die Bedingung nie erfüllt ist!

Lösung: Lass die Schleife rückwärts laufen (!):

Sub test()
Dim tmp
For tmp = ActiveDocument.Bookmarks.Count To 1 Step -1
If Not ActiveDocument.Bookmarks(tmp).Name = „TM“ Then
ActiveDocument.Bookmarks(tmp).Delete
End If
Next
End Sub

So funktioniert’s!

Viele Grüße

Sculpture

*dersichfragt,waswilhelmimmersoprogrammiert?!*

Hi,
mit der Prozedur

Sub test()
Dim tmp
For tmp = 1 To ActiveDocument.Bookmarks.Count
If Not ActiveDocument.Bookmarks(1).Name = „TM“ Then
ActiveDocument.Bookmarks(1).Delete
End If
Next
End Sub


ALLGEMEINER TIPP:

Um Collections, wie zum Beispiel die Collection „Bookmarks“ zu durchlaufen, würde ich die For Each Anweisung verwenden.

z.B.

dim m_book as bookmark

for each m_book in activedocument.bookmarks
if m_book.name „TM“ then
m_book.delete
end if
next

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Sculpture,
Du hast recht, ich arbeite nicht mehr, sondern spiele nur noch mit VBA. Im Ernst: Ich bastle an einem Programm, das komfortabel Textbausteine zusammenführen soll. Deswegen zapfe ich so häufig Dein und das Experten-Wissen der anderen Cracks im Brett an.

Deine Schleife läuft prächtig.
Danke u. Gruß
Wilhelm

Habe auch schon an Textbausteinsystemen gebastelt. So als Tipps dazu:

  • Stelle die Textbausteine als einzelne Word-Dokumente ab.
  • Einfügen kannst Du einen Dokumentinhalt mit Selection.InsertFile

Gruss, H.

Hi Daniel,
genau denselben Weg hatte ich auch schon für mich erfunden.:smile:)
Es ist anscheinende die beste Möglichkeit, den Nutzern zu ermöglichen, die Texte selbst zu ändern, wenn sie die Finger von den Textmarken, Formaten pp lassen.

Da ich weiß, daß Du alles weißt, gestatte bitte eine Frage:

Wie heißt der short-cut zur Beendigung einer Makroaufzeichnung, also das Gegenteil von ALT X K Z?

Gruß
Wilhelm

  • Stelle die Textbausteine als einzelne Word-Dokumente ab.
  • Einfügen kannst Du einen Dokumentinhalt mit
    Selection.InsertFile

Gruss, H.

Shortcuts
Hi Wilhelm,

Wie heißt der short-cut zur Beendigung einer
Makroaufzeichnung, also das Gegenteil von ALT X K Z?

Dafür ist in Word kein Shortcut definiert, das kannst Du aber leicht selbst machen: Unter Extras -> Anpassen -> Tastatur … -> kannst Du eigene Shortcuts definieren. Einfach aus der Listbox den Befehl raussuchen und die Tastenkombination eingeben.

Gruß

Sculpture

Hi Sculpture,
Widerspruch - ganz vorsichtig natürlich - erlaubt?

Ich habe den short-cut in einem meiner schlauen Bücher vor längerer Zeit entdeckt, finde ihn aber nicht wieder.;-(. Ich habe aber natürlich jetzt Dein „Work-around“ eingesetzt.
Bis bald.
Gruß
Wilhelm

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Shortcuts Zusatz
Hi Wilhelm,

Widerspruch - ganz vorsichtig natürlich - erlaubt?

Klar, ich hau Dich nicht *g*, aber genaugenommen ist das kein Shortcut, weil man sich nur per Tasten durch’s Menü hangelt :wink:

Ansonsten hast Du natürlich recht, ALT X K A ist das, was Du suchst. Das kannst Du ganz leicht selbst sehen, indem Du die unterstrichenen Buchstaben in der Symbolleiste anschaust: Alt X aktiviert Extras, mit K kommst zu Du Makros und dann mit A auf Aufzeichnung beenden (natürlich nur, wenn vorher eine Aufzeichnung gestartet wurde, sonst steht da Aufzeichnen für Aufzeichnung starten), also: ALT X K Z Start, ALT X K A Ende

Format -> Zeichen kann man so z.B. mit ALT T Z erreichen.

Viele Grüße

Sculpture