Cycle a paragraph through all available paragraph styles, eventually returning to the style the paragraph started with

Article contributed by Bill Coan

The following macro includes a line that prevents execution when text is selected. (The cursor must be flashing for the macro to run.)

I played with this a bit because someone else thought it would be a nice feature. I assigned the macro to a button, then to a keystroke. I found the keystroke much easier to use. But Word has so many built-in styles that it can be tedious to keep cycling through the styles until the original style comes back around.

Sub CycleThroughStyles()

Dim NeedToRollOver As Boolean
Dim i As Long,  j As Long, k As Long

NeedToRollOver = True

'quit if cursor isn't flashing.
'This limits action to one paragraph

If Selection.Type <> wdSelectionIP Then GoTo EndGracefully

    'find the current paragraph style, then
    'find the next available paragraph style

For i = 1 To ActiveDocument.Styles.Count
    If Selection.Paragraphs(1).Style = ActiveDocument.Styles(i) Then

        For j = i + 1 To ActiveDocument.Styles.Count
            If ActiveDocument.Styles(j).Type = wdStyleTypeParagraph Then
                Selection.Paragraphs(1).Style = ActiveDocument.Styles(j)
                NeedToRollOver = False
                Exit For
            End If
        Next j

    End If

    If NeedToRollOver = False Then
        Exit For
    End If

Next i


'if we reached the last paragraph style, then
'roll over to first available paragraph style

If NeedToRollOver = False Then GoTo EndGracefully

For k = 1 To ActiveDocument.Styles.Count
    If ActiveDocument.Styles(k).Type = wdStyleTypeParagraph Then
        Selection.Paragraphs(1).Style = ActiveDocument.Styles(k)
        Exit For
    End If
Next k

'tell user what current style is.
'clear the undo buffer to prevent error message
'about document formatting being too complex.

EndGracefully:
    Application.StatusBar = Selection.Paragraphs(1).Style
    ActiveDocument.UndoClear

End Sub