View Single Post
 
Old 07-15-2022, 07:12 AM
Shelley Lou Shelley Lou is offline Windows 10 Office 2016
Competent Performer
 
Join Date: Dec 2020
Posts: 170
Shelley Lou is on a distinguished road
Default VBA Change to correct Heading style

Hi Macropod thank you so much for your help with this. I have since copied the code for the Heading numbering so I can do the same thing with my schedule numbering.
I have changed any reference of Heading in the code to Schedule Level and it works well for ApplyMultiLevelNumbers_A and ApplyMultiLevelNumbers_B but for some reason I am getting a run time error 5167 This is not a valid style name in the code below at the line .LinkedStyle = "Schedule Level " & i - when I click the Reset icon in the VBA window the styles update as they should so I am not sure why this bug is happening - I have checked the spelling, spaces etc and even copied the line from ApplyMultiLevelNumbers_A as that code is working just fine with no errors - do you have any ideas why this would happen?

Code:
Sub ApplyMultiLevelScheduleNumbers_HouseStyle()
    'Add as a call to ApplyScheduleStyles_IfAuto to convert numbering to house style
Application.ScreenUpdating = False
Dim LT As ListTemplate, i As Long
Set LT = ActiveDocument.ListTemplates.Add(OutlineNumbered:=True)
For i = 1 To 8
  With LT.ListLevels(i)
    .NumberFormat = Choose(i, "%1.", "%1.%2", "%1.%2.%3", "%1.%2.%3.%4", "(%5)", "(%6)", "(%7)", "(%8)")
    .TrailingCharacter = wdTrailingTab
    .NumberStyle = Choose(i, wdListNumberStyleArabic, wdListNumberStyleArabic, wdListNumberStyleArabic, _
     wdListNumberStyleArabic, wdListNumberStyleLowercaseLetter, wdListNumberStyleLowercaseRoman, wdListNumberStyleUppercaseLetter, _
      wdListNumberStyleArabic)
    .NumberPosition = 0
    .Font.Bold = Choose(i, 0, 0, 0, 0, 0, 0, 0, 0)
    .Alignment = wdListLevelAlignLeft
    .TextPosition = InchesToPoints(i * 0.5)
    .ResetOnHigher = True
    .StartAt = 1
    .LinkedStyle = "Schedule Level " & i
  End With
  With ActiveDocument.Styles("Schedule Level " & i)
  Select Case i
      Case 1
         .ParagraphFormat.LeftIndent = InchesToPoints(0.5)
      Case 2
        .ParagraphFormat.LeftIndent = InchesToPoints(1)
      Case 3
        .ParagraphFormat.LeftIndent = InchesToPoints(1.5)
      Case 5
        .ParagraphFormat.LeftIndent = InchesToPoints(2.75)
      Case 6
       .ParagraphFormat.LeftIndent = InchesToPoints(3.25)
      Case 7
        .ParagraphFormat.LeftIndent = InchesToPoints(3.75)
    End Select
        .ParagraphFormat.FirstLineIndent = InchesToPoints(-0.5)
    Select Case i
    Case 4
        .ParagraphFormat.LeftIndent = InchesToPoints(2.25)
        .ParagraphFormat.FirstLineIndent = InchesToPoints(-0.75)
    End Select
    .ParagraphFormat.Alignment = wdAlignParagraphJustify
    .Font.Name = "Arial"
    .Font.Italic = False
    .Font.ColorIndex = wdAuto
    .Font.Size = 10
  End With
Next
Application.ScreenUpdating = True

End Sub
Reply With Quote