将光标移动到空白段落中

时间:2018-03-09 20:03:32

标签: ms-word word-vba

对此有点麻烦。基本上,我有一个文档,我在其中填充书签,然后在其后创建一个新行(段落),并需要将光标移动到与上一行中书签的开头相同的位置,并在那里输入一些文本。

示例:

我的名字是:[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

但问题是,由于我新创建的段落为空,它会将光标保持在新创建的行的开头。

我想知道是否有人可以帮助我解决这个问题。

3 个答案:

答案 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年代的打字机。