2016-10-03 6 views
0

私は設定した範囲があるので、myRangeとしましょう。私も短い文字列を持っているので、それをsearchArrayと呼んでみましょう。Wordのループ内でFind.Executeを使用する

各文字列のすべてのインスタンスについて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 

、私は私が欲しいものを検索するわけではないとき、バック私はループするように、だけでなく、searchRangemyRange変わり見つける実行します。

searchRangeを各ループの元のmyRangeにリセットするにはどうすればよいですか?これに代えて

答えて

1

:によって

Set searchRange = myRange.Duplicate 

Range.Duplicate上の文書に記載されているように、あなたのsearchRangemyRangeから独立していることになる。この方法で、:

Set searchRange = myRange 

これを行います複製する。範囲オブジェクトでは、元の範囲を変更せずに複製範囲の開始または終了文字位置を変更できます。

関連する問題