0

我已经在 Word VBA 中写了一个直到代码来找到单词“year's”的位置

i = 1
Do
  i = i + 1
Loop Until UCase(wordobj.ActiveDocument.Paragraphs(k).range.Words(i)) = "YEAR'S "

在这里,在我的文档中有一个单词“year's”,但循环没有结束,它一直运行到段落的最后一个单词。

4

1 回答 1

1

这是因为 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 .. LoopWhile .. Wend在这种情况下使用潜在的无限循环。

使用For Each .. Next,更方便,不会溢出。

于 2013-11-11T13:14:11.117 回答