![]() |
#1
|
|||
|
|||
![]()
I'm writing a macro to check the style of each paragraph against the previous. (I know that there's a way to do this using the paragraphs object, which apparently has a mysterious "previous paragraph" parameter, but I can't figure it out.) Here's what I have:
Code:
Sub fix2textparas() Dim Para1, Para2 As String Selection.HomeKey Unit:=wdStory Selection.Find.Style = ActiveDocument.Styles("TEXT") With Selection.Find .Forward = True .Wrap = wdFindStop .Format = True .MatchWildcards = True .Execute End With Do While Selection.Find.Found = True Para1 = Selection.Paragraphs(1).Style Selection.Next(Unit:=wdParagraph, Count:=1).Select Para2 = Selection.Paragraphs(1).Style If Para1 = "TEXT" And Para2 = "TEXT" Then With Selection.Paragraphs(1) .Range.Select .Style = "TEXT IND" .Range.HighlightColorIndex = wdYellow End With With Selection.ParagraphFormat .SpaceBefore = 0 .SpaceBeforeAuto = False .SpaceAfter = 6 .SpaceAfterAuto = False .LineSpacingRule = wdLineSpaceSingle End With End If Selection.Collapse Direction:=wdCollapseStart Loop End Sub Code:
With Selection .Expand Unit:=wdParagraph End With Code:
Selection.MoveRight Unit:=wdParagraph, Count:=1, Extend:=wdExtend I know that I could probably just trap the error, but it seems like there should be a way to do this without having to do so. The rules for the styles in my document are:
TEXT TEXT TEXT IND or TEXT IND TEXT TEXT IND The macro only deals with the first of these at the moment, and there are criteria for "TEXT" that are not needed here. Any help would be great. Thanks! |
#2
|
||||
|
||||
![]()
Try:
Code:
Sub Demo() Application.ScreenUpdating = False Dim i As Long With ActiveDocument For i = 2 To .Paragraphs.Count With .Paragraphs(i) If .Range.Text = .Previous.Range.Text Then .Previous.Range.HighlightColorIndex = wdYellow End If End With Next End With Application.ScreenUpdating = True End Sub
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#3
|
|||
|
|||
![]()
Thanks for the response. However, If I'm reading that right, it will compare the text of the paragraph, not the style. Or are you suggesting that I use this as a starting point?
|
#4
|
||||
|
||||
![]()
Which do you want to compare? If you just want to compare Styles, you could use:
If .Range.Style = .Previous.Range.Style Then If you want to test that paragraphs in a particular Style are preceded by one in another defined Style, you could use code like: If (.Range.Style = "Style2") And (.Previous.Range.Style = "Style1") Then
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#5
|
|||
|
|||
![]()
Thanks!
That's so much simpler than what I was trying to do. I wish I had a better grasp of the range object. So here's what I have: Code:
Sub Demo() Application.ScreenUpdating = False Dim i As Long With ActiveDocument For i = 2 To .Paragraphs.Count With .Paragraphs(i) If (.Range.Style = "TEXT") And (.Previous.Range.Style = "TEXT") Then .Range.Style = "TEXT IND" End If If (.Range.Style = "TEXT") And (.Previous.Range.Style = "TEXT IND") Then .Range.Style = "TEXT IND" End If End With Next End With Selection.WholeStory With Selection.ParagraphFormat .SpaceBefore = 0 .SpaceBeforeAuto = False .SpaceAfter = 6 .SpaceAfterAuto = False .LineSpacingRule = wdLineSpaceSingle End With Application.ScreenUpdating = True End Sub Just one question: why start with the 2nd paragraph? Thanks again. |
#6
|
||||
|
||||
![]()
Because the 1st paragraph has no previous paragraph to compare with (so there's no point) and trying to do so would cause an error.
I note that your code has: Code:
Selection.WholeStory With Selection.ParagraphFormat .SpaceBefore = 0 .SpaceBeforeAuto = False .SpaceAfter = 6 .SpaceAfterAuto = False .LineSpacingRule = wdLineSpaceSingle End With
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#7
|
|||
|
|||
![]()
I can't. I don't manage the styles. That is, I'd have to do it for every document. I get the files with the styles already applied, and the default for all styles is double-spacing. I like to edit single-spaced, so I change it and then change it back when I'm done.
|
![]() |
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
Replacing paragraph formatting before column break also changes the next paragraph after the break | jjmartin1340 | Word | 3 | 09-21-2015 10:50 PM |
Split a paragraph | bnyamin | Word VBA | 13 | 10-05-2014 08:18 PM |
![]() |
icloudy | Word | 1 | 12-09-2012 03:49 PM |
spacing within paragraph | psmoore | Word | 1 | 06-22-2010 02:15 AM |
Paragraph | cloa513 | Word | 1 | 12-29-2009 02:20 AM |