![]() |
|
#1
|
|||
|
|||
|
My first challenge was to automate underlining headers in a word doc. This code worked:
Code:
Sub Underline_Header()
Dim numOfParagraphs As Integer
numOfParagraphs = ActiveDocument.BuiltInDocumentProperties("NUMBER OF PARAGRAPHS")
Selection.HomeKey Unit:=wdStory
For x1 = 1 To numOfParagraphs
Selection.Paragraphs(1).Range.Select
char_count = Len(Selection.Paragraphs(1).Range)
If char_count < 50 Then
Selection.Font.Underline = True
End If
Selection.MoveDown Unit:=wdParagraph, Count:=1
Next x1
End Sub
I have tried altering the code at Unit:=wdStory to Unit:=wdDocument but that was not the solution. I also tried adding Selection.EndKey Unit:=wdStory to the code but I get the same result. |
|
#2
|
||||
|
||||
|
You should be using styles rather than local formatting. Try this code
Code:
Sub Underline_Headings()
Dim aPar As Paragraph
For Each aPar In ActiveDocument.Paragraphs
If Len(aPar.Range.Text) < 50 Then
aPar.Range.Style = "Heading 1"
End If
Next aPar
ActiveDocument.Styles("Heading 1").Font.Underline = wdUnderlineSingle
End Sub
__________________
Andrew Lockton Chrysalis Design, Melbourne Australia |
|
#3
|
|||
|
|||
|
While I agree with Andrew, I would like to ask you a couple of questions about your code and offer some tips for looping through paragraphs when you need to.
Why did you declare numOfParagrpahs but not x1 or char_count? Why did you use char_count in the first place? Isn't If Len(Selection.Paragraphs(1).Range) < 50 the same as: char_count = Len(Selection.Paragraphs(1).Range) If char_count < 50 Then In most case you don't really have to select things to do things with those things you selected. In addition to Andrews For ... Each method, here are two alternate ways to loop through paragraphs. Code:
Sub LoopThroughParagraphsI()
Dim lngIndex As Long
For lngIndex = 1 To ActiveDocument.Range.Paragraphs.Count
If Len(ActiveDocument.Range.Paragraphs(lngIndex).Range) < 50 Then
ActiveDocument.Range.Paragraphs(lngIndex).Range.Font.Underline = wdUnderlineSingle
End If
Next
lbl_Exit:
Exit Sub
End Sub
Sub LoopThroughParagraphsII()
'Typically faster.
Dim oPar As Paragraph
Set oPar = ActiveDocument.Range.Paragraphs(1)
Do
If Len(oPar.Range.Text) < 50 Then oPar.Range.Font.Underline = wdUnderlineNone
Set oPar = oPar.Next
Loop Until oPar Is Nothing
lbl_Exit:
Exit Sub
End Sub
|
|
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Word cutting off half the text | stacereally | Word | 3 | 01-10-2024 08:36 AM |
| Word shuts down when trying to open certain docs | lesliejames | Word | 0 | 01-19-2015 11:36 AM |
How do I see one document map for each half of a split MS WORD 2010 document?
|
quickwin | Word | 3 | 07-09-2013 10:20 PM |
Scrolling wheel in Excel shuts down my computer...
|
lazlow | Excel | 1 | 11-01-2011 10:59 AM |
| Outlook 2007 Shuts Down in Windows 7 | TOActor | Outlook | 0 | 03-06-2010 02:39 AM |