Seq field solution?

Ned Bedinger doc at edwordsmith.com
Wed Mar 12 08:04:45 MDT 2008


Geoff Lane wrote:
> On Thursday, March 6, 2008, jopakent at comcast.net wrote;
> 
>> Can someone point me in the right direction before I self-emmolate out of utter frustration?
> ---
> 
> You can create macros (record them if you're not comfortable with the
> VBA Editor) to create the required levels. For each level, define a
> sequence and also include code to reset the next level down to zero.
> While you can reset all lower levels, you should only need to reset
> the next level down unless you are in the habit of following (say) a
> level 1 item with a level 3 item. You can add these macros to a custom
> tool bar or menu.
> 

Hi Geoff--

I agree with you. I think experience with VBA and Word's model can make 
short work of problems that corner and frustrate the menu-driven users.

Following Stuart's recommendation earlier in this thread, I read an 
explanation on the MVP site about Word's numbering problems. Numbering 
uses 'List Templates', which apparently have some strict rules for 
successful use, without which they can get corrupted. I haven't had any 
time to play with it yet, but I did find the applicable object in VBA 
help, and it looked documented and straight-forward to program. Have you 
worked with List Templates in VBA? I'm just curious, not dissing the 
style- or field-based solutions at all.

--Ned


> It's probably easier to show you. Here's some I prepared earlier:
> 
> Sub InitialiseOutline()
> ' Set level 1 initially to zero
>     Selection.Fields.Add Range:=Selection.Range, _
>         Type:=wdFieldEmpty, Text:="SEQ L1 \h \r0", _
>         PreserveFormatting:=False
> End Sub
> 
> Sub Level1()
>     ' Add a level 1 number and reset level 2 to zero
>     Selection.Fields.Add Range:=Selection.Range, _
>         Type:=wdFieldEmpty, Text:="SEQ L1", _
>         PreserveFormatting:=False
>     Selection.Fields.Add Range:=Selection.Range, _
>         Type:=wdFieldEmpty, Text:="SEQ L2 \h \r0", _
>         PreserveFormatting:=False
> End Sub
> 
> Sub Level2()
>     ' Copy current level 1, add a level 2 number
>     ' and reset level 3 to zero
>     Selection.Fields.Add Range:=Selection.Range, _
>         Type:=wdFieldEmpty, Text:="SEQ L1 \c", _
>         PreserveFormatting:=False
>     Selection.TypeText "."
>     Selection.Fields.Add Range:=Selection.Range, _
>         Type:=wdFieldEmpty, Text:="SEQ L2", _
>         PreserveFormatting:=False
>     Selection.Fields.Add Range:=Selection.Range, _
>         Type:=wdFieldEmpty, Text:="SEQ L3 \h \r0", _
>         PreserveFormatting:=False
> End Sub
> 
> Sub Level3()
>     ' Copy current levels 1 and 2 and
>     ' add a level 3 number
>     Selection.Fields.Add Range:=Selection.Range, _
>         Type:=wdFieldEmpty, Text:="SEQ L1 \c", _
>         PreserveFormatting:=False
>     Selection.TypeText "."
>     Selection.Fields.Add Range:=Selection.Range, _
>         Type:=wdFieldEmpty, Text:="SEQ L2 \c", _
>         PreserveFormatting:=False
>     Selection.TypeText "."
>     Selection.Fields.Add Range:=Selection.Range, _
>         Type:=wdFieldEmpty, Text:="SEQ L3", _
>         PreserveFormatting:=False
> End Sub
> 
> Note that if you insert a list item the following list items won't
> change to reflect the insertion until you update the associated
> fields. To do that, select the list (or the entire document) then
> press F9.
> 
> HTH,
> 



More information about the TECHWR-L mailing list