Hu, Shelley Lou! I tested the code only on plain text (and it worked perfectly), not on tables. You initially asked for a code to work on manual list numberings, but your sample document has tables with automatic numberings, that's why .text = "^13[!^13]@^t" makes wrong finds, which causes the error.
Please, try this version:
Code:
Sub FormatManualNumbering()
Dim rng As range
Dim rngEnd As Long
Application.ScreenUpdating = False
If selection.Type = wdSelectionIP Then
MsgBox Prompt:="You have not selected any text!"
Exit Sub
End If
Set rng = selection.range
rng.InsertBefore vbCr
rngEnd = selection.End
With rng.Find
.ClearFormatting
.Replacement.ClearFormatting
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchWildcards = False
'Remove spaces starting paras:
.text = "^p^w"
.Replacement.text = "^p"
.Execute Replace:=wdReplaceAll
'Remove spaces before para signs:
.text = "^w^p"
.Replacement.text = "^p"
.Execute Replace:=wdReplaceAll
'Remove empty paras:
.MatchWildcards = True
.text = "^13{2,}"
.Replacement.text = "^p"
.Execute Replace:=wdReplaceAll
'Insert a tab before any 1st letter in a para:
.text = "(^13[!^13]@)([A-Za-z])"
.Replacement.text = "\1^t\2"
.Execute Replace:=wdReplaceAll
'Replace two tabs with one tab:
.text = "^t^t"
.Replacement.text = "^t"
.Execute Replace:=wdReplaceAll
'Delete tabs between letters, which have been inserted using
'the code to insert a tab before any 1st letter in a para previously:
.text = "([A-Za-z])^t([A-Za-z])"
.Replacement.text = "\1\2"
.Execute Replace:=wdReplaceAll
End With
rng.Select
Set rng = selection.range
Do
With rng.Find
.ClearFormatting
.Replacement.ClearFormatting
.Forward = True
.Wrap = wdFindStop
.Format = True
.MatchWildcards = True
'Find a str between a tab & the nearest previous para sign, i.e.
'a str between a para sign & a tab, excluding other paras in-between:
.text = "^13[!^13]@^t"
'Skip tables:
If .Execute And rng.Information(wdWithInTable) = False And rng.End <= rngEnd Then
.text = "[,:; ]"
.Replacement.text = "."
.Execute Replace:=wdReplaceAll
Else: Exit Do
End If
rng.Collapse wdCollapseEnd
End With
Loop
Set rng = selection.range
With rng.Find
.ClearFormatting
.Replacement.ClearFormatting
.Forward = True
.Wrap = wdFindStop
.Format = True
.MatchWildcards = True
'Delete all periods immediately before a tab:
.text = "[.]{1,}^t"
.Replacement.text = "^t"
.Execute Replace:=wdReplaceAll
'Insert periods after lone 1st-level numberings:
.text = "(^13[0-9]{1,})^t"
.Replacement.text = "\1.^t"
.Execute Replace:=wdReplaceAll
'Delete extra periods in the doc:
.text = "[.]{2,}"
.Replacement.text = "."
.Execute Replace:=wdReplaceAll
'Delete tab after opening bracket:
.text = "(^13[(])^t"
.Replacement.text = "\1"
.Execute Replace:=wdReplaceAll
'Delete tab after opening double quote (Chr(34) & Chr(147)) after para marks:
.text = "(^13" & "[" & Chr(34) & Chr(147) & "]" & ")^t"
.Replacement.text = "\1"
.Execute Replace:=wdReplaceAll
End With
'Delete the doc's starting para sign inserted previously:
selection.range.Characters.First.Delete
Application.ScreenUpdating = True
MsgBox "Complete"
Set rng = Nothing
End Sub