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

时间:2014-11-26 23:45:05

标签: vba ms-word range word-vba

我在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

使用起始和结束字符的值,如何设置包含该字符串的范围?我做了很多尝试,但都没有成功。

有关微软"使用范围"的说明页面包含以下代码:

Set rngDoc = ActiveDocument.Range(Start:=0, End:=10)

我的样本的第一行没有收到任何错误("设置rngTemp ......"),这似乎与微软的样本非常相似。但是当我尝试:

Set r = w.Paragraphs(i).Range(Start:=lStartPos, End:=lEndPos)

我得到"编译错误:错误的参数数量或无效的属性赋值"

1 个答案:

答案 0 :(得分:2)

我以为我找到了这段代码的答案:

 Set r = w.Range(w.Paragraphs(i).Range.Characters(lStartPos).Start, _
          w.Paragraphs(i).Range.Characters(lEndPos).End)

但它仍然会产生错误。在即时窗口中,我粘贴了每行的代码,每个代码都显示了数字。然后我更改了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)

并且有效。