Your form seems basically sound. I mean as long as you have the named controls in the form and the named bookmarks in the document it functions.
You don't really need the initialize event as you can apply the label and command button captions directly in the properties window. I would do it differently though i.g.,
1. Name the form e.g., frmDemo
2. Put the following code in a standard module:
Sub Demo()
Dim oFrm As frmDemo
Dim lngIndex As Long
Set oFrm = New frmDemo
oFrm.Show
If oFrm.Tag = "Run" Then
On Error Resume Next
For lngIndex = 1 To 10
FillBM "bm" & lngIndex, oFrm.Controls("Textbox" & lngIndex).Value
Next
On Error GoTo 0
End If
lbl_Exit:
Unload oFrm
Set oFrm = Nothing
Exit Sub
End Sub
Public Sub FillBM(strBMName As String, strValue As String)
Dim oRng As Range
With ActiveDocument
Set oRng = .Bookmarks(strBMName).Range
oRng.Text = strValue
oRng.Bookmarks.Add strBMName
End With
lbl_Exit:
Exit Sub
End Sub
3. Put the following code in the form module:
Option Explicit
Private Sub Confirm_Click()
Tag = "Run"
Hide
lbl_Exit:
Exit Sub
End Sub
Private Sub Cancel_Click()
Hide
lbl_Exit:
Exit Sub
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
Cancel = True
Cancel_Click
End If
lbl_Exit:
Exit Sub
End Sub