Добрый день!
Помогите пожалуйста с макросом, который меняет местами два выделенных абзаца.
Абзацы могут быть рядом, но иногда через пустой абзац.
Макрос
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
Все так, как хотел!
Большое спасибо! Выручили!