"Title Case" Handled Incorrectly in Word 2013

In older versions of Word one could select a sentence, or a group of words, and then ask Word to change the case. You can still do this except with title case, which has been changed to "Capitalize Each Word,"  so users can no longer quickly change to title case. You either have to do the capitalization manually, or go back and un-capitalize all the words, such as articles and  prepositions, that should not be capitalized in a title. 
Is there someone out there who could provide some enlightenment into this bizarre loss of functionality, and possibly a workaround? Thanks.
Answer
Answer

Your discription of the issue isn't exactly accurate.  "Capitalize Each Word" replaced "Title Case" in Word 2007.  Both Word 2007 and 2010 are "older versions" of Word.

 

The change basically reflects what was happening in even older versions of Word i.e., if you type, select and apply "Title Case" to "a tale of two cities" in Word 2003, you end up with "A Tale Of Two Cities" or each word is capitalized.

 

Here is a macro you can run on selected text which does a decent job:

Sub MyTitleCase()
Dim oRng As Range
Dim oRng2 As Range
Dim arrFind As Variant
Dim arrReplace As Variant
Dim i As Long
Dim m As Long
Set oRng = Selection.Range
If Selection.Type = wdSelectionIP Then
   MsgBox "Select the text you want to process.", vbOKOnly, "Nothing Selected"
   Exit Sub
End If
'Format the selected text using title case.
oRng.Case = wdTitleWord
'Create exceptions
arrFind = Split("A,An,And,As,At,But,By,For,If,In,Of,On,Or,The,To,With", ",")
'Create replacements
arrReplace = Split("a,an,and,as,at,but,by,for,if,in,of,on,or,the,to,with", ",")
With oRng
  With .Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Wrap = wdFindStop
    .MatchWholeWord = True
    .MatchCase = True
    For i = LBound(arrFind) To UBound(arrFind)
      .Text = arrFind(i)
      .Replacement.Text = arrReplace(i)
      .Execute Replace:=wdReplaceAll
    Next i
  End With
  'Ensure first word is a capitalized.
  oRng.Characters.First.Case = wdUpperCase
  'Ensure first word after a colon is capitalized.
  Set oRng2 = oRng.Duplicate
  oRng2.Start = oRng.Start + InStr(1, oRng, ":")
  'Move to character following colon.
  oRng2.MoveStartWhile Cset:=" ", Count:=wdForward
  If oRng.Start <> oRng2.Start Then
    Beep
    'Cap word following colon.
    oRng2.Characters.First.Case = wdUpperCase
  End If
End With
End Sub

 

See: http://gregmaxey.mvps.org/word_tip_pages/installing_employing_macros.html for instructions to employ the VBA code provided above.


 

Greg Maxey
***
Death smiles at us all, but all a man can do is smile back.


For more help with Word visit:
http://gregmaxey.com/word_tips.html

5 people found this reply helpful

·

Was this reply helpful?

Sorry this didn't help.

Great! Thanks for your feedback.

How satisfied are you with this reply?

Thanks for your feedback, it helps us improve the site.

How satisfied are you with this reply?

Thanks for your feedback.

 
 

Question Info


Last updated November 6, 2024 Views 3,915 Applies to: