0

このコードがあり、ループに陥っています。同様のコードがあり、各単語を一度だけ変更してドキュメントをループします。このサブルーチンを実行すると、最初のインスタンスに固執し、テキストを何度も置き換えます。

「したがって」という単語を見つけて、前の「単語」= ; スキップするには、それ以外の場合は「したがって (;) で結合する必要があります」に変更します。

私は何が欠けていますか/間違っていますか?

前もって感謝します!

 Sub test()

 Dim wrd As Range
 For Each wrd In ActiveDocument.Words
    If InStr(1, wrd, "therefore") <> 0 Then
        If InStr(1, wrd.Previous(Unit:=wdWord, Count:=1).Text, ";") <> 0 Then
        Else
            wrd.Text = "therefore (needs joined with ;)"
        End If
    End If
Next
End Sub
4

1 に答える 1

2

たとえば、これを試してみてください - 前の単語に戻って何度も何度もチェックしていると思われるので、Word DOM は非常に奇妙なものです...!

Sub test() 

 Dim wrd As Range 
 For Each wrd In ActiveDocument.Words 
    If InStr(1, wrd, "therefore") <> 0 Then 
        If InStr(1, wrd.Previous(Unit:=wdWord, Count:=1).Text, ";") = 0 Then 
            wrd.Text = "therefore (needs joined with ;)" 
        End If 

        wrd.Next Unit:=wdWord, Count:=1
    End If 
Next 
End Sub 
于 2012-07-09T16:02:24.777 に答える