仅查找样式文本"标题1" (Range.Find匹配样式)

时间:2012-02-15 01:59:06

标签: vba word-vba

我试图在我的文档中找到一些只出现在“标题1”样式中的文本。到目前为止,没有用。

示例代码:

With ThisDocument.Range.Find
    .Text = "The Heading"
    .Style = "Heading 1" 'Does not work
    .Execute
    If .Found Then Debug.Print "Found"
End With

只需注意,它会一直停在目录。

编辑:修复了错误的'if'语句

3 个答案:

答案 0 :(得分:3)

您的代码对我来说很好。我最好的猜测是你的目录中存在'标题1'样式?

下面的代码应该继续查找,查找所有事件:

Dim blnFound As Boolean

With ThisDocument.Range.Find
    .Text = "The Heading"
    .Style = "Heading 1"

    Do
        blnFound = .Execute
        If blnFound Then
            Debug.Print "Found"
        Else
            Exit Do
        End If
    Loop
End With

我希望这会有所帮助。

答案 1 :(得分:1)

我在Google上发现了这个问题,问题中的代码对我不起作用。我做了以下修改来修复它:

  • 我将Selection.Find.Style = "Heading 1"更改为对象。
  • 我更改了代码以从.Execute而非.Found
  • 获取搜索的布尔结果

我希望这有助于其他一些Google员工。

With ThisDocument.Range.Find
    .Text = "The Heading"
    .Style = ActiveDocument.Styles("Heading 1")

    Dim SearchSuccessful As Boolean
    SearchSuccessful = .Execute

    If SearchSuccessful Then
        ' code
    Else
        ' code
    End If
End With

答案 2 :(得分:1)

我认为它不起作用的原因是因为你必须设置

.format = true

标记,可能必须通过.Styles方法指定样式:

With ThisDocument.Range.Find
    .Text = "The Heading"
    .Format = true   <<< -------- Tells Word to look for a special formatting
    .Style = ThisDocument.Styles("Heading 1")

    Do
        blnFound = .Execute
        If blnFound Then
           Debug.Print "Found"
        Else
           Exit Do
        End If
    Loop
End With