Sub Boldiser() ' Paul Beverley - Version 03.05.22 ' Toggles bold for next character or selected text If Selection.End = Selection.Start Then Application.Run macroName:="Bold" Else ' If it's a long selection, just change it If Len(Selection) > 100 Then Set firstChar = Selection.Range.Characters(1) Selection.Font.Bold = Not (firstChar.Font.Bold) Else ' How many Bold/roman chars? Set rng = Selection.Range.Duplicate charsBold = 0 For i = 1 To Len(rng.Text) isBold = rng.Characters(i).Font.Bold If isBold Then charsBold = charsBold + 1 Next i charsRoman = Len(Selection) - charsBold ' Change to Bold or roman, accordingly If charsBold > charsRoman Then Selection.Font.Bold = False Else ' Don't Boldise following space or quote If Len(Selection) > 1 Then Do While InStr(ChrW(8217) & "' ", Right(rng.Text, 1)) > 0 rng.MoveEnd , -1 DoEvents Loop End If rng.Font.Bold = True rng.Select End If End If End If End Sub