所以我有一个我设定的范围,我们称之为myRange
。我还有一个短字符串数组,我们称之为searchArray
。
我想在myRange
内搜索每个字符串的所有实例,并更改文字颜色。
我遇到的问题是每次执行搜索后如何重置范围。
这就是我目前的尝试:
Dim searchRange as Range
For i = 1 to UBound(searchArray)
Set searchRange = myRange
With searchRange.Find
.Text = searchArray(i)
.Forward = True
.Wrap = wdFindStop
.Execute
While .Found
.Parent.Font.Color = RGB(20,20,20)
.Execute
Wend
End With
Next i
然而,执行查找不仅会更改searchRange
,还会更改myRange
,这样当我循环回来时,我不会搜索我想要的内容。
如何在每次循环中将searchRange
重置为原始myRange
?
答案 0 :(得分:2)
而不是:
Set searchRange = myRange
这样做:
Set searchRange = myRange.Duplicate
这样,searchRange
将独立于myRange
,如Range.Duplicate
上的文档中所述:
通过复制范围对象,您可以更改重复范围的起始或结束字符位置,而无需更改原始范围。