问题描述
我有一个已经包含文本的内容控件。我想添加新文本,并将之前的文本放入StrikeThrough,我的代码如下所示。
Sub testCCrangeModifier()
Dim CC As ContentControl
For Each CC In ActiveDocument.ContentControls
If CC.Title = "myContentControl" And CC.Tag = "myContentControl" Then
CC.Range.Font.StrikeThrough = True
CC.Range.Text = ("NEWTEXT" & Chr(13) & Chr(10) & CC.Range.Text)
End If
Next CC
End Sub
使用此代码,结果为: NEWTEXT OLDTEXT
结果应如下所示
在宏之前:
OLDTEXT
宏之后:
NEWTEXT OLDTEXT
Chr(13)和Chr(10)是旧文本和新文本之间的换行符
解决方法
- 您的代码会在添加文本之前设置格式,因此很明显 您添加的任何文本都将具有该格式。
- 仅富文本内容控件可以包含不同的格式。
下面的代码检查CC
是富文本内容控件,然后添加文本并删除第一段的删除线。
Sub testCCrangeModifier()
Dim CC As ContentControl
For Each CC In ActiveDocument.ContentControls
If CC.Title = "myContentControl" And CC.Tag = "myContentControl" And CC.Type = wdContentControlRichText Then
With CC.Range
.Font.StrikeThrough = True
.Text = ("NEWTEXT" & Chr(13) & Chr(10) & CC.Range.Text)
.Paragraphs(1).Range.Font.StrikeThrough = False
End With
End If
Next CC
End Sub