Word,Paragraphs.Add不是return刚刚添加的段落

Word, Paragraphs.Add does not return the paragraph that has just been added

考虑这个 word 文档:

现在,下面的代码应该插入一个新段落,并使其成为选中的段落。

Sub Macro1()    
    Dim p As Paragraph       
    Set p = ActiveDocument.Content.Paragraphs.Add()
    p.Range.Select    
End Sub

相反,这是结果。实际上已经添加了一个新段落,但是它选择了上一个。
有点莫名其妙,因为无论你在哪里添加新的段落,都应该是最后选择的而不是之前的。

段落是一系列字符,包括段落符号。

要在现有段落之后插入一个段落,您需要将插入点放在现有段落符号之后。
这可以用于除最后一个段落之外的任何段落。对于最后一段,您只能走到其插入点之前:

Dim r As Range

' Suppose there are 10 paragraphs
Set r = ActiveDocument.Paragraphs(3).Range
r.Collapse wdCollapseEnd
r.Select ' Places the caret after the 3rd paragraph sign

Set r = ActiveDocument.Paragraphs.Last.Range
r.Collapse wdCollapseEnd
r.Select ' Places the caret before the last paragraph sign

这是不一致和烦人的,但这就是你得到的。

因此,在最后添加段落时,插入点将位于现有段落符号之前,因此新段落符号将占用旧段落的主体,成为倒数第二个。

所以你想要的只是插入后Set p = ActiveDocument.Content.Paragraphs.Last