Sub CaseNextWord() ' Paul Beverley - Version 20.04.22 ' Changes case of initial letter of next word or selection trackit = True ' If an area of text is selected If Selection.End > Selection.Start Then If trackit = False Then myText = Selection If LCase(myText) = myText Then Selection.Range.Case = wdTitleWord Else Selection.Range.Case = wdLowerCase End If Else Set rng = Selection.Range.Duplicate If LCase(rng.Text) = rng.Text Then For wd = 2 To rng.Words.count ch = rng.Words(wd).Characters(1) rng.Words(wd).Characters(1) = UCase(ch) Next wd Else For wd = 2 To rng.Words.count ch = rng.Words(wd).Characters(1) rng.Words(wd).Characters(1) = LCase(ch) Next wd End If End If Else ' If no text is selected Selection.MoveStart wdWord Selection.MoveEnd , 1 If LCase(Selection) = UCase(Selection) Then Selection.MoveStart wdWord Selection.MoveEnd , 1 End If If trackit = False Then Selection.Range.Case = wdToggleCase Selection.MoveRight Unit:=wdCharacter, count:=1 Else m = Selection.Text If UCase(m) = m Then Selection.Text = LCase(m) Else Selection.Text = UCase(m) End If Selection.Collapse wdCollapseEnd End If End If End Sub