#1
|
|||
|
|||
Reverse Paragraph List Macro
Hi all.
I found the macro below to reverses the order of a text (paragraph) list. This works just fine, but affects the entire document. How could I change this to apply the effect to just selected lines. I've created a few macros in the past for an old version of CorelDraw I used to use, but the various syntex I've tried don't work with Word. Any advice would be appreciated. Mark Code:
Sub ReverseOrderOfParagraphs() Dim tmpTable As Table Dim rg As Range Set tmpTable = ActiveDocument.Range.ConvertToTable(Separator:=wdSeparateByParagraphs) With tmpTable .Columns.Add BeforeColumn:=.Columns(1) Set rg = .Cell(1, 1).Range rg.End = rg.End - 1 rg.Fields.Add Range:=rg, Type:=wdFieldSequence, Text:="a" rg.Cells(1).Range.Copy .Columns(1).Select Selection.Paste Selection.Fields.Update .Sort ExcludeHeader:=False, FieldNumber:=1, SortOrder:=wdSortOrderDescending .Columns(1).Delete .ConvertToText End With End Sub |
#2
|
||||
|
||||
What happens if you change
ActiveDocument.Range to Selection.Range
__________________
Andrew Lockton Chrysalis Design, Melbourne Australia |
#3
|
|||
|
|||
That was embarressingly simple.
CorelDraw uses ActiveSelectionRange. I tried a dozen variations of this without success. Thanks for the advice it's much appreciated. For anyone who comes across this thread in the future, below is the ammended version. I've also included a message box warning when the user forgets to select any text. Code:
Sub ReverseOrderOfParagraphs() Dim tmpTable As Table Dim rg As Range InSelection = False If Selection.Type = wdSelectionIP Then MsgBox "Nothing Selected" End End If Set tmpTable = Selection.Range.ConvertToTable(Separator:=wdSeparateByParagraphs) With tmpTable .Columns.Add BeforeColumn:=.Columns(1) Set rg = .Cell(1, 1).Range rg.End = rg.End - 1 rg.Fields.Add Range:=rg, Type:=wdFieldSequence, Text:="a" rg.Cells(1).Range.Copy .Columns(1).Select Selection.Paste Selection.Fields.Update .Sort ExcludeHeader:=False, FieldNumber:=1, SortOrder:=wdSortOrderDescending .Columns(1).Delete .ConvertToText End With End Sub |
#4
|
||||
|
||||
I think the message box at the start needs to be a bit more complex to deal with the likely selections: less than two paragraphs; includes a table
Code:
Sub ReverseOrderOfParagraphs() Dim tmpTable As Table, rg As Range If Selection.Range.Paragraphs.Count < 2 Then MsgBox "You must select more than one paragraph" Exit Sub ElseIf Selection.Range.Tables.Count > 0 Then MsgBox "This macro doesn't work with selections which are in tables" Exit Sub End If Set tmpTable = Selection.Range.ConvertToTable(Separator:=wdSeparateByParagraphs) With tmpTable .Columns.Add BeforeColumn:=.Columns(1) Set rg = .Cell(1, 1).Range rg.End = rg.End - 1 rg.Fields.Add Range:=rg, Type:=wdFieldSequence, Text:="a" rg.Cells(1).Range.Copy .Columns(1).Select Selection.Paste Selection.Fields.Update .Sort ExcludeHeader:=False, FieldNumber:=1, SortOrder:=wdSortOrderDescending .Columns(1).Delete .ConvertToText End With End Sub
__________________
Andrew Lockton Chrysalis Design, Melbourne Australia |
#5
|
|||
|
|||
Or we could tie it up completely by saying "You must select two or more consecutive paragraphs."
Sark |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
How Do I Control Paragraph Spacing in a Numbered List | SteveClark590 | Word | 11 | 07-08-2021 07:31 PM |
How do I order the paragraph styles list? | Tunathedog | Word | 3 | 04-08-2016 05:37 AM |
Reverse Bold macro | brent chadwick | Word VBA | 15 | 02-26-2016 05:25 PM |
Is There an Animation that Will Reverse the Order of a Bulleted List | equity | PowerPoint | 3 | 04-04-2014 12:33 AM |
Macro to reverse a test string | Jennifer Murphy | Word VBA | 5 | 01-16-2014 03:19 PM |