考虑一下这个词文档:

现在,下面的代码应该插入一个新的段落,并使其成为选定的段落。
Sub Macro1()
Dim p As Paragraph
Set p = ActiveDocument.Content.Paragraphs.Add()
p.Range.Select
End Sub相反,这是结果。实际上增加了一个新段落,但它选择了前一个段落。
这有点令人费解,因为无论你在哪里添加新的段落,都应该是在结尾选择的段落,而不是前一段。

发布于 2021-06-27 14:45:38
段落是一系列字符,直到并包括一个段落符号。
为了在现有段落之后插入段落,需要在现有段落符号之后放置插入点。
除了最后一段之外,任何段落都可以这样做。对于最后一段,您只能在其插入点之前进行以下操作:
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。
https://stackoverflow.com/questions/68151954
复制相似问题