对此有点麻烦。基本上,我有一个文档,我在其中填充书签,然后在其后创建一个新行(段落),并需要将光标移动到与上一行中书签的开头相同的位置,并在那里输入一些文本。
示例:
我的名字是:[bookmark_name]
.................... | < - 希望我的光标到这里,以便我可以手动添加另一个名称
我有以下代码:
Sub InsertParagraphMethod()
Dim MyRange As Object
Set MyRange = docCaseAssessment.Bookmarks("bookmark_name").Range
' Range Example:
MyRange.InsertParagraphAfter
MyRange.SetRange Start:=MyRange.Start, End:=MyRange.Start
MyRange.Select
Selection.MoveDown Unit:=wdLine, Count:=1, Extend:=wdMove
End Sub
但问题是,由于我新创建的段落为空,它会将光标保持在新创建的行的开头。
我想知道是否有人可以帮助我解决这个问题。
答案 0 :(得分:1)
为了完整起见,以下是@macropod建议的几种替代方法。就个人而言,我更喜欢他的方法,但也许你有理由它在你的特定情况下不起作用:
将TAB停在所需位置 根据您的描述和您正在使用的代码,将TAB停止在包含书签的文档中。当您在该范围的末尾输入新段落时,它应该"继承" TAB停止。
(更好的是:创建一个样式并在样式中包含TAB停止。)
然后在您插入的文本中添加一个TAB字符,以将插入移动到TAB停止。
使用两行双列表 将书签放入第二列,将其前面的文本放入第一列。将新文本插入第二行的第二列。
关于你的代码的注意事项:如果我正确理解你的代码,你可以将它收紧一点(线条更少,意图更清晰)。这样的事情对我的第一个建议有用:
Sub InsertParagraphMethod()
Dim MyRange As Object
Set MyRange = docCaseAssessment.Bookmarks("bookmark_name").Range
' Range Example:
MyRange.InsertParagraphAfter
MyRange.Collapse wdCollapseEnd
MyRange.Text = vbTab & "new name"
'or instead of the last three lines, above:
'MyRange.InsertAfter Chr(13) & vbTab & "new name"
End Sub
如果您使用Paul关于使用带有悬挂缩进的书签格式化段落并使用新行字符(ASCII 11 = Shift + Enter)的建议,那么更像是这样:
Sub InsertParagraphMethod()
Dim MyRange As Object
Set MyRange = docCaseAssessment.Bookmarks("bookmark_name").Range
' Range Example:
myRange.InsertAfter Chr(11) & "new name"
End Sub
答案 1 :(得分:0)
要实际做你想做的事,我会接受braX'建议,但你也必须设置字体。
Dim wR As Range
Dim wd As Document: Set wd = ThisDocument
wd.Range(0, 0).Select
Selection.WholeStory
Selection.Font.Name = "consolas"
Set wR = wd.Bookmarks("bookmark_name").Range
wR.InsertParagraphAfter
wd.Paragraphs(wd.Paragraphs.Count).Range.Text = String$(12, " ")
Selection.GoTo What:=wdGoToBookmark, Name:="bookmark_name"
Selection.MoveDown Unit:=wdLine, Count:=1
答案 2 :(得分:0)
只需格式化
即可我的名字是:[bookmark_name]
带有挂起缩进的段落,其等于[bookmark_name]开始的位置。如果在段落的第一行或任何后续行的末尾插入手动换行符(Chr 11),则新行也将从[bookmark_name]开始的水平位置开始。如brax建议填充间距是不好的做法 - Word不是20世纪50年代的打字机。