#1
|
|||
|
|||
Apply style to next paragraph
I'm trying to apply a style to the next paragraph after changing the preceding one, but I get an error. Can someone help? Thanks! Code:
Dim oPar As Paragraph For Each oPar In ActiveDocument.Paragraphs If oPar.Range.ParagraphFormat.Alignment = wdAlignParagraphRight Then oPar.Range.Style = "MyStyle1" ' oPar.Next.Style = "MyStyle2" '---> I get an error End If Next oPar |
#2
|
|||
|
|||
Hi, RobiNew! Although I didn't test it, but try:
oPar.range.Next.Style = "MyStyle2" |
#3
|
|||
|
|||
RobiNew,
I doubt that would make a difference. The most likely problem is that you find yourself at the end of the document and there is no .Next paragraph to apply the style to. When you post, instead of "I get an error" How about I get the following error Err.Number and Err.Description. Try: Code:
Sub A() Dim oPar As Paragraph For Each oPar In ActiveDocument.Paragraphs If oPar.Range.ParagraphFormat.Alignment = wdAlignParagraphRight Then oPar.Style = "MyStyle1" If Not oPar.Range.End = ActiveDocument.Range.End Then oPar.Next.Style = "MyStyle2" '---> I get an error End If 'End If Next oPar End Sub |
#4
|
|||
|
|||
There are better ways than the simple fix above.
For one, if your document has a thousand or say a million paragraphs, it would be inefficient to evaluate each one to see if it was the last one. So, since you now know that there is no next paragraph following the last paragraph of a document you could use an error handler: Code:
Sub A() Dim oPar As Paragraph For Each oPar In ActiveDocument.Paragraphs 'If oPar.Range.ParagraphFormat.Alignment = wdAlignParagraphRight Then oPar.Style = "Body Text" On Error GoTo Err_Handler oPar.Next.Style = "Body Text" 'End If Next oPar lbl_Exit: Exit Sub Err_Handler: If Err.Number = 91 Then If oPar.Range.End = ActiveDocument.Range.End Then 'You know this error will occur so it is not an issue Else MsgBox Err.Number & " " & Err.Description End If Else MsgBox Err.Number & " " & Err.Description End If Resume lbl_Exit End Sub or you could adjust your processing range so you never reach the last paragraph: Code:
Sub B() Dim oRng As Range Dim oPar As Paragraph Set oRng = ActiveDocument.Range oRng.End = ActiveDocument.Range.Paragraphs.Last.Previous.Range.End For Each oPar In oRng.Paragraphs If oPar.Range.ParagraphFormat.Alignment = wdAlignParagraphRight Then oPar.Style = "Body Text" oPar.Next.Style = "Body Text" End If Next oPar lbl_Exit: Exit Sub End Sub |
#5
|
|||
|
|||
Thanks, Vivka! Gmaxey is quite right: I had tried the line you suggest before posting, then I discovered that the error was due to the structure of the larger macro in which the code was inserted. So Gmaxey is again quite right: "How about: I get the following error Err.Number and Err.Description". Thanks, Gmaxey for the very instructive alternatives! Now everything seems to be OK.
|
#6
|
|||
|
|||
Yes, I completely agree with Greg!
|
#7
|
|||
|
|||
Suppose the condition in Sub B() was: If oPar.Range Like Chr(2). Why is it that the code doesn't recongnize the presence of a footnote reference mark? Thanks!
|
#8
|
|||
|
|||
What does oPar.Range Like Chr(2) have to do with the presence or absence of a footnote?
How about: If oPar.Range.Footnotes.Count > 0 Then |
#9
|
|||
|
|||
It's perfect. Thank you very much indeed, Gmaxey, for helping me in the transition from Selection to Range!
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
How to apply a style to a group of words inside a paragraph? | saint—112 | Word | 3 | 09-07-2022 09:55 PM |
Apply table style | shahid.majeed | Word Tables | 0 | 10-02-2019 01:25 AM |
My style keeps changing, can't get saved style to apply | Meenie50 | Word | 7 | 07-20-2017 03:47 PM |
Paragraph space before - can styles apply it intelligently? | timpani | Word | 7 | 10-23-2012 04:08 PM |
Character style stripped while applying paragraph style | sams_gates | Word | 0 | 08-29-2009 02:03 AM |