The problem isn't with anything that Graham or I posted but with the the wrong kind of loop being used in your own code. Try:
Code:
Sub UpdateBookmarks()
Dim i As Long
With ActiveDocument
For i = 1 To .Bookmarks.Count
With .Bookmarks(i)
Call UpdateBM(.Name, InputBox("Please enter " & .Name))
End With
Next
End With
End Sub
Sub UpdateBM(bmName As String, bmContent As String)
Dim bmRng As Word.Range
With ActiveDocument
Set bmRng = .Bookmarks(bmName).Range
bmRng.Text = bmContent
.Bookmarks.Add bmName, bmRng
End With
End Sub