Hallo zusammen,
gegeben ist eine Tabellenzelle in Word, in der sich mehrere Absätze befinden. Jeder Absatz ist mit einer Bookmark gekennzeichnet. Folgende Sub hat die Aufgabe, einen Übergebenen Wert in eine Bookmark zu schreiben oder den zugehörigen Absatz zu löschen. (Außer den letzten Absatz.)
der nachfolgende Code bringt beim ersten Delete eine Fehlermeldung 5904 und erfüllt dann mit den zweiten doch meinen Wunsch . Warum macht der erste nicht, was ich möchte?
Grüße
Jürgen
gegeben ist eine Tabellenzelle in Word, in der sich mehrere Absätze befinden. Jeder Absatz ist mit einer Bookmark gekennzeichnet. Folgende Sub hat die Aufgabe, einen Übergebenen Wert in eine Bookmark zu schreiben oder den zugehörigen Absatz zu löschen. (Außer den letzten Absatz.)
der nachfolgende Code bringt beim ersten Delete eine Fehlermeldung 5904 und erfüllt dann mit den zweiten doch meinen Wunsch . Warum macht der erste nicht, was ich möchte?
Grüße
Jürgen
Visual Basic-Quellcode
- ' Bei manchen Bookmarks soll der ganz Absatz gelöscht werden, wenn es keinen Wert gibt.
- Public Sub EinfacherWertAbsatzLöschen(ByRef doc As Word.Document, ByVal str_Bookmarkname As String, ByVal str_Wert As String)
- Dim rng As Word.Range
- Dim rng2 As Word.Range
- Dim l As Long
- ' Existiert die gesuchte Bookmark
- If doc.Bookmarks.Exists(str_Bookmarkname) Then
- ' Gibt es einen Wert
- If str_Wert <> "" Then
- ' dieser Teil läuft
- Else
- ' Eigentlich könnte nun der Absatz, in dem sich die Bookmark befindet, gelöscht werden.
- ' Doc.Bookmarks(str_Bookmarkname).Range.Paragraphs(1).Range.Delete
- ' Aus unbekanntem Grund meldet Word dabei Laufzeitfehler 5904. obwohl es in diesem Absatz
- ' keine Fields gibt. Als Work-around wird dieser Absatz zweimal gelöscht. beim zweiten mal geht's
- ' Nimm die Range des Absatzes
- Set rng = doc.Bookmarks(str_Bookmarkname).Range.Paragraphs(1).Range.Duplicate
- On Error Resume Next
- Err.Clear
- rng.Delete
- If Err.Number = 5904 Then rng.Delete
- End If
- End If
- End Sub
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „jojo6“ ()