Vba 如何在不使用选择的情况下更改当前段落的格式

Vba 如何在不使用选择的情况下更改当前段落的格式,vba,ms-word,Vba,Ms Word,我没有使用选择就有了下面的代码 Sub Format paragraph() Dim wdDoc As Document With wdDoc.Range.Find .Font.Size = 12 .Text = "?" .Execute End With End Sub 当找到字体大小为12的字符时,如何更改当前段落的格式?例如: wdDoc.Paragraph(current).Font.Size = 14 wdDoc.

我没有使用
选择
就有了下面的代码

Sub Format paragraph()

Dim wdDoc As Document

    With wdDoc.Range.Find 
       .Font.Size = 12
       .Text = "?" 
       .Execute 
    End With
End Sub
当找到字体大小为12的字符时,如何更改当前段落的格式?例如:

wdDoc.Paragraph(current).Font.Size = 14

wdDoc.Paragraph(current).Font.Color = wdBlue
Sub Format paragraph()
  Dim rng as Range, para as Paragraph
  Dim wdDoc As Document

  Set wdDoc = ActiveDocument. 'Missing in code in question...
  Set rng = wdDoc.Content 'Content returns the Range
    With rng.Find 
       .Font.Size = 12
       .Text = "?" 
       If .Execute = True Then
         Set para = rng.Paragraphs(1)
         para.Font.Size = 14
         para.Font.Color = wdBlue
       End If
    End With
End Sub

感谢您的帮助。

诀窍是使用特定的
范围
对象,该对象可用于访问其“父”段落。当
Find.Execute
成功时,正在搜索的
范围
包含找到的项目(与选择跳转到找到的项目相同)。例如:

wdDoc.Paragraph(current).Font.Size = 14

wdDoc.Paragraph(current).Font.Color = wdBlue
Sub Format paragraph()
  Dim rng as Range, para as Paragraph
  Dim wdDoc As Document

  Set wdDoc = ActiveDocument. 'Missing in code in question...
  Set rng = wdDoc.Content 'Content returns the Range
    With rng.Find 
       .Font.Size = 12
       .Text = "?" 
       If .Execute = True Then
         Set para = rng.Paragraphs(1)
         para.Font.Size = 14
         para.Font.Color = wdBlue
       End If
    End With
End Sub

@辛迪·梅斯特你好,辛迪。谢谢你的回答。这似乎是我需要的。有几个段落,一些字体大小为12,另一些字体为其他字体。那么,如何在
while
循环中使用rng.find块包含
?或者我应该首先计算与我想要的样式相匹配的段落,然后对循环执行
以对其他段落应用相同的更改吗?@GerCas循环是通常的方法。在这里和其他地方有很多例子可以将其与
Find
一起使用。例如,而不是应用手动格式化,您可能会考虑应用一种定义所需格式的段落样式。这只是一个步骤,如果以后需要再次更改格式,只需在UI中更改样式定义就是一个步骤-不需要宏。@Cindy_Meister Hi Cindy。谢谢你的建议和链接分享。