Although you may think linked styles to be cumbersome, this is precisely the use case that they were designed for.
As their name suggests, linked styles consist of two separate styles - a paragraph style and a character style with the same name plus the suffix " Char". When a linked style is applied via the UI Word decides which style to apply dependent on context.
When applied via VBA it is up to you to decide which style to apply.
To apply a heading style to the entire paragraph you can either use the name:
Code:
Selection.Range.Style = "Heading 2"
or, especially valuable if the user's OS language isn't English, the enum:
Code:
Selection.Range.Style = wdStyleHeading2
To apply the character style you can either use the name directly:
Code:
Selection.Range.Style = "Heading 2 Char"
or construct the name:
Code:
Selection.Range.Style = ActiveDocument.Styles(wdStyleHeading2).NameLocal & " Char"