When you output text to a collapsed bookmarked range, the text gets inserted after it. The 'correct' way to update a bookmark is to use code like:
Code:
Sub UpdateBookmark(StrBkMk As String, StrTxt As String)
Dim BkMkRng As Range
With ActiveDocument
If .Bookmarks.Exists(StrBkMk) Then
Set BkMkRng = .Bookmarks(StrBkMk).Range
BkMkRng.Text = StrTxt
.Bookmarks.Add StrBkMk, BkMkRng
End If
.Fields.Update
End With
Set BkMkRng = Nothing
End Sub
and call the process with something like:
Call UpdateBookmark("bookmark_name", "bookmark_text")
If needed, you can call the same sub repeatedly, with different bookmark names and/or bookmark text, such as when you have multiple bookmarks to update or when you need to change the contents of a particular bookmark.
The .Fields.Update method updates the cross-references.