MS Word:替换用户窗体中的书签文本,而不是使用VBA添加

时间:2018-11-15 12:41:14

标签: vba ms-word userform

VBA新手在这里。

我刚刚创建了一个用户表单,可让我的团队创建求职信。

下面的按钮出现在文档的“说明”部分中。当他们单击它时,它显示了我需要填写的表格。

Private Sub EditFormButt_Click()
    CoverLetterForm.Show
End Sub

该表单当前具有预填充的占位符文本。我希望我的团队能够替换文本。现在,发生的是,当他们单击我的“确定”按钮(遵循代码)时,占位符文本仍然保留,并添加了新文本。

例如:

  致:保罗·丹尼尔斯先生女士。莎拉·琼斯(Sarah Jones)   
21新秩序街   
伦敦   
英国   

尊敬的保罗·丹尼尔斯先生女士。莎拉·琼斯(Sarah Jones)

女士萨拉·琼斯(Sarah Jones)是占位符文本,保罗·丹尼尔斯(Paul Daniels)先生是更新后的文本。

我需要任何新条目来替换占位符文本中的内容,但不删除尚未更新的任何内容,有时,他们可能只想更改收件人的姓名,而无需更改该人的地址。如果他们想纠正可能在拼写上犯的任何错误而不必开始全新的文档,这也很有用。

这是我的OKButt代码:

Private Sub OKButt_Click()
    Dim bmRecName As Range
    Set bmRecName = ActiveDocument.Bookmarks("bmRecName").Range
    bmRecName.Text = Me.RecName.Value
    Dim bmRecAddress As Range
    Set bmRecAddress = ActiveDocument.Bookmarks("bmRecAddress").Range
    bmRecAddress.Text = Me.RecAddress.Value
    CoverLetterForm.Hide
End Sub

感谢您的帮助:)

2 个答案:

答案 0 :(得分:0)

好吧,我想我已经找到了答案,但是如果有人能找到一个更优雅的解决方案,我将为您服务!

Private Sub OKButt_Click()
    Dim bmRecName As Range
    Set bmRecName = ActiveDocument.Bookmarks("bmRecName").Range
    bmRecName.Text = Me.RecName.Value
    ActiveDocument.Bookmarks.Add "bmRecName", bmRecName
    Dim bmRecAddress As Range
    Set bmRecAddress = ActiveDocument.Bookmarks("bmRecAddress").Range
    bmRecAddress.Text = Me.RecAddress.Value
    ActiveDocument.Bookmarks.Add "bmRecAddress", bmRecAddress
    CoverLetterForm.Hide
End Sub

基本上添加以下代码:

ActiveDocument.Bookmarks.Add "bmRecAddress", bmRecAddress

答案 1 :(得分:0)

更简单:

Private Sub OKButt_Click()
Dim bmRng As Range
With ActiveDocument
  Set bmRng = .Bookmarks("bmRecName").Range
  bmRng.Text = Me.RecName.Value
  .Bookmarks.Add "bmRecName", bmRng
  Set bmRng = .Bookmarks("bmRecAddress").Range
  bmRng.Text = Me.RecAddress.Value
  .Bookmarks.Add "bmRecAddress", bmRng
  CoverLetterForm.Hide
End With
End Sub