-1

我正在向文档添加字段并添加阴影。以下代码不起作用。

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

注释掉的行会将阴影添加到文档中的第一个字段。

4

2 回答 2

1

在您应用阴影时,没有选择任何内容,范围的起点和终点是相同的。尽管在 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
于 2020-08-28T07:25:11.643 回答
0

由于您使用的是 VBA,因此使用“With”来处理您刚刚创建的字段对象有一些话要说,例如

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
于 2020-08-28T20:33:17.607 回答