Word vba将着色应用于新建字段



我正在为文档添加字段并添加着色。以下代码不起作用。

With Selection
.Range.Font.Shading.BackgroundPatternColor = wdColorLightYellow
.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, _
PreserveFormatting:=False, Text:="Page"
.Fields.Update
End With
'ActiveDocument.Fields(1).Select
'Selection.Range.Font.Shading.BackgroundPatternColor = wdColorLightYellow

注释掉的行将为文档中的第一个字段添加着色。

在应用着色的点上,没有选择任何内容,范围的起点和终点相同。尽管在UI中,您可以在键入之前应用粗体或斜体等格式,但应用着色会将其应用于整个段落。

要仅对字段进行着色,需要在应用着色之前选择它,就像您问题中的替代代码中一样。

With Selection
.Fields.add Range:=Selection.Range, Type:=wdFieldEmpty, _
PreserveFormatting:=False, text:="Page"
.Fields.Update
.MoveLeft Extend:=wdExtend
.Range.Font.Shading.BackgroundPatternColor = wdColorLightYellow
'this also works
'.Shading.BackgroundPatternColor = wdColorLightYellow
End With

由于您使用的是VBA,因此使用"用";使用您刚刚创建的字段对象,例如

With Selection
With .Fields.Add( _
Range:=Selection.Range, _
Type:=wdFieldEmpty, _
PreserveFormatting:=False, _
Text:="Page")
.Update
' you either need to color .Code, .Result, or both  
.Code.Font.Shading.BackgroundPatternColor = wdColorLightYellow
.Result.Font.Shading.BackgroundPatternColor = wdColorLightYellow
End With
End With

相关内容

  • 没有找到相关文章

最新更新