0

我有这段代码,它陷入了一个循环。我有类似的代码,它循环遍历文档,每个单词只更改一次。当我运行这个 sub 时,它会粘在第一个实例上并一遍又一遍地替换文本。

我希望它找到“因此”这个词,如果前面的“词”=; 跳过,否则更改为“因此(需要加入;)”。

我错过了什么/做错了什么?

提前致谢!

 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 回答