Macro - Make lists "Restart numbering" after every heading
For posterity - I know others before me have searched in vain for such a solution.
Sub RestartAfterAnyHeading()
Dim doc As Object, text As Object, paragraphs As Object
Dim para As Object, styleName As String
Dim restartNext As Boolean
doc = ThisComponent
text = doc.Text
paragraphs = text.createEnumeration()
restartNext = False
While paragraphs.hasMoreElements()
para = paragraphs.nextElement()
styleName = para.ParaStyleName
' Check if the paragraph uses a heading style (starts with "Heading")
If Left(styleName, 7) = "Heading" Then
restartNext = True ' Mark that next list should restart
Else
' Not a heading – check if it's a list item
On Error Resume Next
Dim numberingLevel As Integer
numberingLevel = para.NumberingLevel
If Err.Number = 0 Then ' It is a list paragraph
If numberingLevel = 0 And restartNext Then
' This is the first item of a list after a heading
para.NumberingStartValue = 1
restartNext = False ' Only restart once
End If
End If
On Error GoTo 0
End If
Wend
MsgBox "Numbering restarted after every heading."
End Sub