我在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)
我得到"编译错误:错误的参数数量或无效的属性赋值"
答案 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)
并且有效。