在userform更新VBA Microsoft Word后删除书签范围中的上一个文本

时间:2018-03-07 21:43:33

标签: if-statement checkbox word-vba userform bookmarks

我正在使用VBA Microsoft Word模板。我构建了一个包含各种复选框,文本框和选项框的用户窗体。我有一个过程,在填写userform后,用户可以再次打开userform以更改选项,新选项将替换以前的选项。以下代码涉及三个不同的复选框,根据所选的框组合,将出现一个句子。到目前为止一切正常,但我想弄清楚的是,如果用户取消选中所有复选框,模板将替换书签范围中的先前文本。以下是完成该过程的代码示例。

Dim Bookmark1 As Range
If Me.CheckBox1.Value And Me.CheckBox2 And Me.CheckBox3 = True Then
    Set Bookmark1 = ActiveDocument.Bookmarks("Bookmark1").Range
    Bookmark1.Text = "You have selected Apples, Oranges, and Bananas."
    ActiveDocument.Bookmarks.Add "Bookmark1", Bookmark1
ElseIf Me.CheckBox1.Value And Me.CheckBox2 = True Then
    Set Bookmark1 = ActiveDocument.Bookmarks("Bookmark1").Range
    Bookmark1.Text = "You have selected Apples and Bananas."
    ActiveDocument.Bookmarks.Add "Bookmark1", Bookmark1

等,直到显示每个组合,除非用户取消选中每个复选框。如果所有三个框都是假的话,我已经尝试制作一个if语句,然后txt等于""

我也试过等于null并且仍然没有工作任何帮助非常感谢。

如果你碰巧知道的话,你会读到这个。 我想为输入到用户窗体中的文本框中的数据分配快捷键,以便在键入用户时只需选择Ctrl Shift C即可输入光标位于word文档中的文本框的值。任何有关这方面的帮助都会非常棒,谢谢!

1 个答案:

答案 0 :(得分:0)

我想出了我在If ... Elseif语句结尾处所做的事情,最后一个代码将以前的文本无效设置为Elseif而不是Else

以下是有效的代码

Dim Bookmark1 As Range
If Me.CheckBox1.Value And Me.CheckBox2 And Me.CheckBox3 =.       True Then
Set Bookmark1 = ActiveDocument.Bookmarks("Bookmark1").Range
Bookmark1.Text = "You have selected Apples, Oranges, and Bananas."
ActiveDocument.Bookmarks.Add "Bookmark1", Bookmark1
ElseIf Me.CheckBox1.Value And Me.CheckBox2 = True Then
Set Bookmark1 = ActiveDocument.Bookmarks("Bookmark1").Range
Bookmark1.Text = "You have selected Apples and Bananas."
ActiveDocument.Bookmarks.Add "Bookmark1", Bookmark1
Else Set Bookmark1 = ActiveDocument.Bookmarks("Bookmark1").Range
Bookmark1.Text = ""