Word Макрос: Поменять абзацы местами

Автор Anton, 29 мая 2017, 09:50

Anton

Добрый день!
Помогите пожалуйста с макросом, который меняет местами два выделенных абзаца.
Абзацы могут быть рядом, но иногда через пустой абзац.

Администратор

Макрос
Sub Макрос()

    '1. Проверка, сколько выделено абзацев.
    If (Selection.Paragraphs.Count < 2) Or (Selection.Paragraphs.Count > 3) Then
        MsgBox "Нужно выделить два или три абзаца.", vbExclamation
        Exit Sub
    End If
   
    '2. Если выделено два абзаца.
    If Selection.Paragraphs.Count = 2 Then
        TwoPars
    '3. Если выделено три абзаца.
    ElseIf Selection.Paragraphs.Count = 3 Then
        ThreePars
    End If

End Sub

Private Sub TwoPars()

    ' Если выделено два абзаца.

    Dim rng As Range
   
    '1. Присваиваем имя "rng" фрагменту, где находится абзац 1.
    Set rng = Selection.Paragraphs(1).Range.Duplicate
    '2. Превращаем объект "rng" в точку вставки.
    rng.Collapse Direction:=wdCollapseStart
    '3. Вырезание абзаца 2.
    Selection.Paragraphs(2).Range.Cut
    '4. Вставка вырезанного абзаца.
    rng.Paste

End Sub

Private Sub ThreePars()

    ' Если выделено три абзаца.

    Dim par1 As Paragraph, rng As Range
   
   
    '1. Запоминание первого абзаца, чтобы потом поставить перед ним средний абзац.
    Set par1 = Selection.Paragraphs(1)
   
    '2. Вставка второго абзаца перед первым.
    ' Присваиваем имя "rng" фрагменту, где находится абзац 1.
    Set rng = par1.Range.Duplicate
    ' Превращаем объект "rng" в точку вставки.
    rng.Collapse Direction:=wdCollapseStart
    ' Вырезание абзаца 2.
    Selection.Paragraphs(3).Range.Cut
    ' Вставка вырезанного абзаца.
    rng.Paste
   
    '3. Перемещение среднего абзаца.
    ' Присваиваем имя "rng" фрагменту, где находится абзац 1.
    Set rng = par1.Range.Duplicate
    ' Превращаем объект "rng" в точку вставки.
    rng.Collapse Direction:=wdCollapseStart
    ' Перемещение среднего абзаца.
    par1.Next.Range.Cut
    ' Вставка вырезанного абзаца.
    rng.Paste

End Sub
[свернуть]

Anton

Все так, как хотел!
Большое спасибо! Выручили!