Please Note: This article is written for users of the following Microsoft Word versions: 2007, 2010, 2013, 2016, 2019, and Word in Microsoft 365. If you are using an earlier version (Word 2003 or earlier), this tip may not work for you. For a version of this tip written specifically for earlier versions of Word, click here: Controlling the Format of Cross-References.
Written by Allen Wyatt (last updated February 26, 2024)
This tip applies to Word 2007, 2010, 2013, 2016, 2019, and Word in Microsoft 365
Stephen asked if it is possible to control the format of cross-references inserted by Word. When he inserts a label and number such as Table 1 or Figure 12, he wants the label lowercase (table, figure) and a non-breaking space between the label and the number.
There is no way to control this type of cross-reference formatting in Word. Obviously, you can change the cross-references manually after placing them, but whenever you update fields the original Word-chosen format will be used for them. There are a couple of macro-based solutions you can try. The first solution will change the actual field codes used for the field:
Sub FieldRefChanges1() On Error Resume Next Dim oStoryRng As Range Dim oFld As Field For Each oStoryRng In ActiveDocument.StoryRanges For Each oFld In oStoryRng.Fields If oFld.Type = wdFieldRef And oFld.Result.Words.Count <= 2 Then 'add format switch with lowercase option to field codes oFld.Code.Text = oFld.Code.Text & "\* lower " 'updates the field results to display the new format oFld.Update End If Next oFld Next oStoryRng End Sub
The macro includes a couple of nested For loops. The first one steps through each story in the document, and the second goes through each field in each story. An If statement is then used to make sure that the field is a REF field (the kind used for cross-references) and that the result of the field is two or fewer words (as in Table 1 or Figure 12).
If these criteria are met, then the macro makes a change to the actual field code, adding the switch that results in the field being displayed in lowercase.
There are a couple of drawbacks to this macro. First, if you run it multiple times, the \* lower switch is added to the REF fields multiple times. Second, the macro doesn't change the space in the field results to a non-breaking space.
To overcome both problems, just modify the macro so that it automates the manual process you would go through to change the macro results.
Sub FieldRefChanges2() On Error Resume Next Dim oStoryRng As Range Dim oFld As Field Dim sTemp As String Dim J As String For Each oStoryRng In ActiveDocument.StoryRanges For Each oFld In oStoryRng.Fields If oFld.Type = wdFieldRef And oFld.Result.Words.Count <= 2 Then sTemp = oFld.Result.Text sTemp = LCase(sTemp) J = InStr(sTemp, " ") sTemp = Left(sTemp, J - 1) & Chr(160) & _ Mid(sTemp, J + 1, Len(sTemp) - J) oFld.Result.Text = sTemp End If Next oFld Next oStoryRng End Sub
This macro is essentially the same as the previous one, except that it works strictly with the result text for the field. The text is assigned to the sTemp variable, which is then converted to lowercase. The position of the space is determined, and it is replaced with a non-breaking space. The result is then stuffed back into the result text for the field.
Note:
WordTips is your source for cost-effective Microsoft Word training. (Microsoft Word is the most popular word processing software in the world.) This tip (8479) applies to Microsoft Word 2007, 2010, 2013, 2016, 2019, and Word in Microsoft 365. You can find a version of this tip for the older menu interface of Word here: Controlling the Format of Cross-References.
Comprehensive VBA Guide Visual Basic for Applications (VBA) is the language used for writing macros in all Office programs. This complete guide shows both professionals and novices how to master VBA in order to customize the entire Office suite for their needs. Check out Mastering VBA for Office 2010 today!
Some types of documents rely on cross-references quite a bit. Setting up the Cross-reference dialog box the first time in ...
Discover MorePage references are a common element of many documents. If you need to have a page reference to a page in a different ...
Discover MoreFREE SERVICE: Get tips like this every week in WordTips, a free productivity newsletter. Enter your address and click "Subscribe."
There are currently no comments for this tip. (Be the first to leave your comment—just use the simple form above!)
Got a version of Word that uses the ribbon interface (Word 2007 or later)? This site is for you! If you use an earlier version of Word, visit our WordTips site focusing on the menu interface.
Visit the WordTips channel on YouTube
FREE SERVICE: Get tips like this every week in WordTips, a free productivity newsletter. Enter your address and click "Subscribe."
Copyright © 2024 Sharon Parq Associates, Inc.
Comments