我已经在 Word VBA 中写了一个直到代码来找到单词“year's”的位置
i = 1
Do
i = i + 1
Loop Until UCase(wordobj.ActiveDocument.Paragraphs(k).range.Words(i)) = "YEAR'S "
在这里,在我的文档中有一个单词“year's”,但循环没有结束,它一直运行到段落的最后一个单词。
这是因为 Word 会自动将普通撇号转换为印刷撇号。
year's
就这样year’s
,你的比较失败了。
Sub test()
Dim p As Paragraph, w As Range
Dim i As Integer, t As String, found As Boolean
For Each p In wordobj.ActiveDocument.Paragraphs
For Each w In p.Range.Words
t = Replace(Trim(UCase(w)), "’", "'")
i = i + 1
If t = "YEAR'S" Then
found = True
Exit For
End If
Next w
If found Then Debug.Print "Found at " & i
Next p
End Sub
在相关说明中,我强烈反对在这种情况下Do .. Loop
或While .. Wend
在这种情况下使用潜在的无限循环。
使用For Each .. Next
,更方便,不会溢出。