向上/向下移动段落(无复制/粘贴)

时间:2015-09-26 15:19:03

标签: ms-word word-vba

在单词中我正在寻找一个键盘快捷键,它允许我移动我的光标当前为一段/一行或一行的段落。

我是VBA等新手,但发现了这个

Sub OutlineMoveUp()
    Selection.Range.Relocate wdRelocateUp
End Sub

这非常接近我正在寻找的东西,但似乎根据它在大纲结构中的位置(可能变得相当混乱)推动该段落。我只想将其向上或向下移动一段/行(也与其格式无关)。

(RStudio提供了这个很棒的功能,您只需移动选定的文本行而无需复制粘贴;我正在寻找等效的单词)。

很多人。

2 个答案:

答案 0 :(得分:0)

Relocate方法旨在以大纲模式see here工作。请改用Move方法:

Selection.Range.Move Unit:=wdParagraph, Count:=-1

您可能需要调整计数以获得您想要的效果 - 如果-1不起作用,请尝试-2等。

答案 1 :(得分:0)

使用剪切/粘贴可能会更干净但是请尝试:

Sub Test_NewP()
    Dim doc As Word.Document
    Dim CurR As Word.Range
    Dim NewP As Word.Paragraph
    Dim IndexP As Long

    Set doc = ActiveDocument
    If doc.ActiveWindow.View = wdOutlineView Then
        MsgBox "This program doesn't work in outline view --- please switch to another view", vbOKOnly, "Error"
        Exit Sub
    End If

    Set CurR = Selection.Paragraphs(1).Range
    IndexP = doc.Range(0, CurR.End).Paragraphs.Count
    Set NewP = doc.Paragraphs.Add(doc.Paragraphs(IndexP - 1).Range)
    NewP.Range.Text = CurR.Text
    CurR.Delete

    Set NewP = Nothing
    Set CurR = Nothing
    Set doc = Nothing
End Sub

这可能无法可靠地管理格式,但您可以添加代码来修复它。

希望有所帮助。