2015-09-26 3 views
0

В словах я ищу короткую вырезку клавиатуры, которая позволяет мне перемещать абзац, в котором мой курсор в настоящее время является одним абзацем/строкой вверх или вниз.перемещение абзаца вверх/вниз (без копирования/вставки)

Я новичок в VBA и т.д., но нашел это

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

Это происходит довольно близко к тому, что я ищу, но, кажется, переместить абзац вверх в соответствии с его положением в структуре контура (что может становятся довольно запутанными). Я просто хочу переместить его на один абзац/строку вверх или вниз (также независимо от его форматирования).

(RStudio предлагает эту приятную функцию, где вы можете просто перемещать выделенные текстовые строки без копирования, я ищу эквивалент в слове).

много thx.

ответ

0

Метод Relocate предназначен для работы в режиме Outline see here. Попробуйте метод Move вместо:

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

Вы, возможно, потребуется настроить Count, чтобы получить эффект вы хотите --- если -1 не работает, попробуйте -2 и т.д.

+0

большое спасибо. но, к сожалению, команда не оказывает никакого влияния. курсор не перемещается, не говоря уже об активном абзаце/строке. – zoowalker

+0

Чтобы уточнить, вы хотите переместить курсор, не перемещая какой-либо текст? – xidgel

+0

извините, если я не понимаю. Я хочу переместить абзац, в котором находится курсор. Во многих случаях «Selection.Range.Relocate wdRelocateUp» делает это, но бывают случаи, когда «активный» абзац не перемещает только одну строку вверх/вниз, но, видимо, весь уровень в структуре документа (хотя я не знаю, t полностью понимал узор за ним). Интересно, зависит ли это от того, как формируется активный абзац. Если активный абзац является, например, часть списка/перечисления, весь блок списка перемещается (но я хочу только переместить строку/абзац, в котором находится мой курсор). – zoowalker

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 

Это, вероятно, не будет надежно управлять форматированием, но вы можете добавить код, чтобы исправить это.

Надеюсь, что это поможет.

Смежные вопросы