我有一个带有一堆复选框的用户窗体。如果复选框为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测试
(新段落)
(新段落)
(新段落)
我想要的是这个
文字测试
(新段落)
文字测试
(新段落)
文字测试
(新段落)
答案 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