0

假设我想使用 VBA Word 来查找/替换。我想找到用“页面(标题需要加粗”)替换单词“页面”,但我只想在前面的单词不是“继续下一个”时这样做

我试图找到这个词,然后使用键盘命令来 ctrl+shift+向左箭头,如果那些 =“继续下一步”什么都不做,否则用“页面”替换“页面”(标题需要加粗)。

   Sub SpellingSuggestionPage()

Dim wrd As Range
Dim srchText As String, avdText As String, replWord As String
Dim ar() As String
Dim ignoreWord As Boolean

srchText = "page"
avdText = "next"
replWord = "page (title needs bolded)"

ar = Split(avdText, " ")

For Each wrd In ActiveDocument.Words

    ignoreWord = False

    If wrd = srchText Then

        If wrd.Previous(Unit:=wdWord, Count:=1).Text = avdText Or wrd.Previous(Unit:=wdWord, Count:=1).Bold Then
              ignoreWord = True
        End If

        If ignoreWord = False Then
            wrd.Text = replWord
        End If

    End If
Next
End Sub
4

2 回答 2

1

如果我理解正确,我认为这可能会做到:

If InStr(value, "page") > 0 And InStr(value, "continued on next") = 0 Then
    value = Replace(value, "page", "page (title needs bolded)")
End If

这就是说:如果值在任何地方都包含“页面”并且在任何地方都不包含“继续下一个”,则将“页面”替换为“页面(标题需要加粗)”。

于 2012-05-18T22:03:18.210 回答
1

像这样?

Option Explicit

Sub Sample()
    Dim wrd As Range
    Dim srchText As String, avdText As String, replWord As String
    Dim ar() As String
    Dim ignoreWord As Boolean

    srchText = "page"
    avdText = "continued on next"
    replWord = "page (title needs bolded)"

    ar = Split(avdText, " ")

    For Each wrd In ActiveDocument.Words
        ignoreWord = False

        If wrd = srchText Then
            If Trim(wrd.Previous(Unit:=wdWord, Count:=1).Text) = Trim(ar(2)) Then
                If Trim(wrd.Previous(Unit:=wdWord, Count:=2).Text) = Trim(ar(1)) Then
                    If Trim(wrd.Previous(Unit:=wdWord, Count:=3).Text) = Trim(ar(0)) Then
                        ignoreWord = True
                    End If
                End If
            End If

            If ignoreWord = False Then
                wrd.Text = replWord
            End If
        End If
    Next
End Sub
于 2012-05-21T13:35:20.027 回答