我正在尝试创建一个简单的用户窗体,该窗体在Word中添加和删除一个文本块

时间:2019-05-17 13:30:34

标签: vba ms-word

我有一个带有一堆复选框的用户窗体。如果复选框为true,我希望VBA代码添加文本块(定义为变量),如果未选中,则删除该文本块。例如,这是我为以下复选框之一所拥有的:

Private Sub CheckBox1_Click()
    Dim Text1 As String
    Text1 = "Text test"
    If CheckBox1.Value = True Then
    Selection.TypeText Text:=Text1
    Selection.InsertParagraph
    End If
    If CheckBox1.Value = False Then
    Selection.Delete Text:=Text1
    End If
End Sub

首先,Selection.Delete Text:=Text1部分是完全错误的。我试图用谷歌搜索类似的东西,却找不到能删除变量内容的东西。

第二,Selection.InsertParagraph代码似乎存在错误。我希望它在每个文本/变量块之间添加一个新段落,但是按照现在的代码方式,如果要激活3次宏,它将像这样分别添加文本块和各段:

  

文本testText testText测试

     

(新段落)

     

(新段落)

     

(新段落)

我想要的是这个

  

文字测试

     

(新段落)

     

文字测试

     

(新段落)

     

文字测试

     

(新段落)

1 个答案:

答案 0 :(得分:1)

回答第一个问题,对于这个问题,有足够的信息可以提供答案...

在Word文档中插入和插入内容的最佳控制是使用Range对象。只能有一个选择,但是代码可以与多个范围一起使用。

要在文本之后立即插入新段落,可以使用ANSI 13字符在文本末尾添加新段落,可以使用vbCr在VBA代码中表示。

示例:

Private Sub CheckBox1_Click()
    Dim Text1 As String
    Dim rngTarget as Range

    Text1 = "Text test"
    Set rngTarget = Selection.Range

    If CheckBox1.Value = True Then
      rngTarget.Text = Text1 & vbCr
    End If
    '
    'If CheckBox1.Value = False Then
    '  Selection.Delete Text:=Text1
    'End If

   '''Move to the end of the range and select that for the next iteration
    rngTarget.Collapse wdCollapseEnd
    rngTarget.Select
End Sub