在Microsoft Word中执行多个Selection.Range对象

时间:2018-05-17 20:31:56

标签: vba ms-word word-vba

我正在尝试用引号括住页面上的所有选定文本,但是当我运行代码时,它只会影响页面上的最后一个选择。我的代码也解开了所有选定的文本,这部分工作正常。我的代码如下:

With Selection.Range
    Selection.Range.Bold = wdToggle
    .Text = Chr(34) & .Text & Chr(34)
End With

2 个答案:

答案 0 :(得分:1)

尝试:

Sub Demo()
Application.ScreenUpdating = False
Selection.Font.Shading.BackgroundPatternColor = wdColorAqua
With ActiveDocument.Range
  With .Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Text = ""
    .Replacement.Text = ""
    .Font.Shading.BackgroundPatternColor = wdColorAqua
    .Format = True
    .Forward = True
    .Wrap = wdFindStop
    .Execute
  End With
  Do While .Find.Found
    .Font.Shading.BackgroundPatternColor = wdColorAutomatic
    If .Characters.Last = vbCr Then .End = .End - 1
    .InsertBefore Chr(147) 'Chr(34)
    .InsertAfter Chr(148) 'Chr(34)
    .Collapse wdCollapseEnd
    .Find.Execute
  Loop
End With
Application.ScreenUpdating = True
End Sub

注意:我使用了智能引号,但如果您愿意,可以使用直引号。

答案 1 :(得分:0)

你可以这样做:https://stackoverflow.com/a/46106637/3451115

只有在整个文档中不使用高亮显示时才有效。这个想法来自这里:https://stackoverflow.com/a/36413118/3451115

简而言之,您使用高亮作为搜索和后处理的临时标记(因为想要更好的表达)。查找突出显示允许您循环选择所选内容。