Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Word / Programming / November 2004

Tip: Looking for answers? Try searching our database.

Please help with looping in macro

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Jason Logue - 28 Oct 2004 17:01 GMT
Hi, I posted this to the vba programming list, but I thought I should
post it to the vba for beginners site as well since I qualify myself
as a beginner.  I am working on a macro that finds each instance of a
Heading 6, then
moves one line below that text to the formatted numbered list and sets
the
numbered list to start at one.  I am still new at this, so I am trying
to
keep it simple (i.e. I am not sure how to tell it to look only for
lists that
begin with 2,3,4,5, etc, but not 1).  I want the code to repeat until
all the
numbered lists following heading sixes are restarted.  Here is the
code I
have thus far (as you can probably tell, it's not working):

Const LookFor As String = "Recommendations:"
'
With ActiveDocument.Content.Find
   .ClearFormatting
   .Text = LookFor
   With .Style = ActiveDocument.Styles("Heading 6")
   End With
   
   Do While .Execute
 Selection.MoveDown Unit:=wdLine, Count:=1
   With ListGalleries(wdOutlineNumberGallery).ListTemplates(4).ListLevels(1)
       .NumberFormat = "%1."
       .TrailingCharacter = wdTrailingTab
       .NumberStyle = wdListNumberStyleArabic
       .NumberPosition = InchesToPoints(0)
       .Alignment = wdListLevelAlignLeft
       .TextPosition = InchesToPoints(0)
       .TabPosition = InchesToPoints(0#)
       .ResetOnHigher = 0
       .StartAt = 1
   .LinkedStyle = "List Number"
   End With

Loop

TIA - Jason
Klaus Linke - 03 Nov 2004 13:39 GMT
Hi Jason,

I love
> Const LookFor As String = "Recommendations:"

Fitting!

Selection.Find is simpler than using a Range (which would require you to
define one in the first place), and since you want to search for some
formatting ("Heading 6"), you need to set ".Format = True".

The "With/End With" in
>     With .Style = ActiveDocument.Styles("Heading 6")
>     End With
is redundant (... it doesn't hurt, but can be removed).

OTOH, an "End With" is missing at the very end of your macro.

The list galleries are best avoided. You can access the list template that
is responsible for the current numbering directly.

You'd end up with some macro like the one below.

You also might check out whether you can incorporate "Heading 6" and the
list style you are using for the following paragraph in the same list
template.
But if you only want to restart if "Heading 6" contains the string
"Recommendations:", you need the macro... or a separate "Recommendations"
style that looks like a "Heading 6".

Regards,
Klaus

Const LookFor As String = "Recommendations:"
'
Selection.End = 0
Selection.Find.ClearFormatting
Selection.Find.style = ActiveDocument.Styles("Heading 6")
With Selection.Find
 .Text = LookFor
 .Wrap = wdFindStop
 .Format = True
 Do While .Execute
   Selection.MoveDown Unit:=wdLine, Count:=1
   With Selection.Range.ListFormat
       .ApplyListTemplate _
         ListTemplate:=.ListTemplate, _
         ContinuePreviousList:=False, _
         ApplyTo:=wdListApplyToWholeList, _
         DefaultListBehavior:=wdWord9ListBehavior
   End With
 Loop
End With
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.