gpt4 book ai didi

vba - Word, Paragraphs.Add 不返回刚刚添加的段落

转载 作者:行者123 更新时间:2023-12-04 07:27:11 26 4
gpt4 key购买 nike

考虑这个word文档:
A word document with only one paragraph and some text inside it
现在,下面的代码应该插入一个新段落,并使其成为选定的段落。

Sub Macro1()    
Dim p As Paragraph
Set p = ActiveDocument.Content.Paragraphs.Add()
p.Range.Select
End Sub
相反,这是结果。实际上已经添加了一个新段落,但它选择了上一个。
这有点令人费解,因为无论您在哪里添加新段落,都应该是最后选择的而不是前一个。
enter image description here

最佳答案

段落是直到并包括段落符号的一系列字符。
为了在现有段落之后插入一个段落,您需要将插入点定位在现有段落符号之后。
可以对除最后一段以外的任何段落执行此操作。对于最后一段,您只能到达其插入点之前的位置:

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插入后。

关于vba - Word, Paragraphs.Add 不返回刚刚添加的段落,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68151954/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com