如何在 vba 中为一组特定字符设置 Word 的范围?

Rai*_*fMT 5 vba ms-word range

我在 Word 段落中找到一个开始和结束字符,但对于我的生活,无法确定如何设置包含这些字符的范围。这是我所拥有的摘录:

Set rngTemp = w.Paragraphs(i).Range
For iCounter = 1 To rngTemp.Characters.Count
    If rngTemp.Characters(iCounter).HighlightColorIndex = wdYellow Then
        lStartPos = iCounter
        While rngTemp.Characters(iCounter).HighlightColorIndex = wdYellow
            iCounter = iCounter + 1
        Wend
        lEndPos = iCounter
Run Code Online (Sandbox Code Playgroud)

使用开始和结束字符的值,如何设置包含该字符串的范围?我已经进行了多次尝试,但都没有成功。

Microsoft 的“使用范围”页面上的说明包含以下代码:

Set rngDoc = ActiveDocument.Range(Start:=0, End:=10)
Run Code Online (Sandbox Code Playgroud)

我在示例的第一行(“Set rngTemp ...”)中没有收到任何错误,这似乎与 Microsoft 的示例非常相似。但是当我尝试:

Set r = w.Paragraphs(i).Range(Start:=lStartPos, End:=lEndPos)
Run Code Online (Sandbox Code Playgroud)

我收到“编译错误:参数数量错误或属性分配无效”

Rai*_*fMT 2

我想我已经用这段代码找到了答案:

 Set r = w.Range(w.Paragraphs(i).Range.Characters(lStartPos).Start, _
          w.Paragraphs(i).Range.Characters(lEndPos).End)
Run Code Online (Sandbox Code Playgroud)

但它仍然产生错误。在立即窗口中,我粘贴了每一行的代码,并且每行都显示了数字。然后我更改了 set 语句以使用实际数字,这很有效。由于某种原因,VBA 不希望允许上面代码中的数字用于设置范围变量。我将原始代码(从顶部)更改为:

Set rngTemp = w.Paragraphs(i).Range

        For iCounter = 1 To rngTemp.Characters.Count
            If rngTemp.Characters(iCounter).HighlightColorIndex = wdYellow Then

                'lStartPos = iCounter
                lStartPos = w.Paragraphs(i).Range.Characters(iCounter).Start

                While rngTemp.Characters(iCounter).HighlightColorIndex = wdYellow
                    iCounter = iCounter + 1
                Wend

                'lEndPos = iCounter
                lEndPos = w.Paragraphs(i).Range.Characters(iCounter).End

                Set r = w.Range(lStartPos, lEndPos)
Run Code Online (Sandbox Code Playgroud)

它起作用了。