VBA单词非连续选择所有文本实例

问题描述 投票:0回答:1

该代码旨在搜索当前打开的 Word 文档并选择当前所选文本的所有实例。例如,我选择“Casted”运行宏,并且在出现文本“Casted”的任何地方,所有实例都会同时被选择[就像按住ctr单击进行多个选择]

Sub SelectAllText()
    Dim searchText As String
    searchText = Selection.Text

    If searchText <> "" Then
        Dim foundRange As Range
        Set foundRange = ActiveDocument.Range

        With foundRange.Find
            .ClearFormatting
            .Text = searchText
            .Forward = True
            .Wrap = wdFindStop
            .MatchWholeWord = True
            .MatchCase = False
            .Execute

            Do While .found
                foundRange.Select 'what i needed to work
                foundRange.HighlightColorIndex = wdYellow 'This is just to highlight, not what i needed
                .Execute
            Loop
        End With
    End If
End Sub

因此代码确实选择了文本,但是当选择下一个实例时,前一个实例将被取消选择。因此,最终只有最后一个实例的文档保持选中状态,同时我希望所有内容都保持选中状态。

vba ms-word textselection
1个回答
0
投票

就像Red Hare所说,我尝试了Find对象的HitHighlight方法并且成功了。

这个方法虽然不能真正像Selection对象或者Select那样被选中,但是仍然像不连续多选的效果。而且运行后,范围(Find对象的Parent)并没有改变,高亮效果也只是高亮,没有保存在HighlightColorIndex属性中,因此根本不会改变原始文档,即。 Document 的 Saved 属性不会更改为 false。此外,它不会改变插入位置。

Sub SelectAllText()
    Dim searchText As String
    searchText = Selection.Text

    If searchText <> "" Then
        Dim foundRange As Range
        Set foundRange = ActiveDocument.Range

        With foundRange.Find
'            .ClearFormatting
'            .Text = searchText
'            .Forward = True
'            .Wrap = wdFindStop
'            .MatchWholeWord = True
'            .MatchCase = False
'            .Execute
            
'            Do While .Found
'                foundRange.Select 'what i needed to work
'                foundRange.HighlightColorIndex = wdYellow 'This is just to highlight, not what i needed
'                .Execute
'            Loop

            .ClearHitHighlight
            .HitHighlight FindText:=searchText, TextColor:=RGB(255, 255, 255), HighlightColor:=RGB(0, 0, 0), MatchCase:=True, MatchWholeWord:=True
            
        End With
    End If
End Sub

这应该就是Red Hare提到的框和按钮。非常感谢他!

© www.soinside.com 2019 - 2024. All rights reserved.