A Faster Path to Keyboard Shortcuts

I was recently adding some keyboard shortcuts in Word and noticed that the ALT + CTRL + NUM + shortcut (“Num +” is the addition key on the numeric keypad) was assigned to a command I hadn’t heard of: ToolsCustomizeKeyboardShortcuts. Apparently this shortcut is the only way to run this command, which is unfortunate because it can save you a lot of time when you are modifying shortcuts.

Using the Command

When you press ALT + CTRL + NUM + your mouse arrow will change to the looped square symbol: ⌘. While this new pointer is visible, you can get information on keyboard shortcuts in two ways: by selecting a command or by pressing a keyboard shortcut combination.

Setting a Shortcut for a Command

If you use the looped square cursor to select a command in the Ribbon, Quick Access Toolbar, or Status Bar, Word will pop up the Customize Keyboard dialogue box. This will display the current shortcut(s) assigned to the selected command and allow you to make adjustments.

You can also view shortcuts for commands triggered from dialogue boxes. For example, if you open the Styles dialogue box (CTRL + ALT + SHIFT + S), you can use the looped square icon to add a shortcut for the Style Inspector: select the icon showing an A with a magnifying glass. This is a handy command that doesn’t have a predefined shortcut and is not easily navigated to.

You may recall seeing Word display the shortcut assigned to a ribbon command when the cursor hovers over it (for example, when you hover over the Bold icon). However, Word doesn’t always display shortcuts when you hover (as when you hover over the New Comment icon). And if more than one shortcut is assigned to a command, when hovering does work it will only show one of the shortcuts. So this command is a much more accurate way to identify shortcuts.

Checking a Combination of Keys

If you press a keyboard shortcut while the looped square icon is visible, Word will also pop up the Customize Keyboard dialogue box, this time displaying the command assigned to that shortcut. This is very handy for determining if a particular shortcut is currently in use.

There is a downside to this command, however: it will not work for keyboard shortcuts that consist of the ALT key and another single key. If you run the command and then press this kind of shortcut combination, Word will display the KeyTips for the current ribbon menu, just as if you were pressing the ALT key by itself.

Other Tips

When the mouse pointer appears as a looped square symbol (⌘) you can press the Esc key to exit this command and be returned to a regular mouse arrow.

To use this command on a laptop that doesn’t have a numeric pad, you can manually assign it to another shortcut:

  • Burrow down to the Customize Keyboard dialogue box: File > Options > Customize Ribbon > Keyboard shortcuts: Customize…
  • In the Categories window on the left, scroll all the way to the bottom and select the All Commands category.
  • In the Commands window on the right, scroll down to ToolsCustomizeKeyboardShortcuts
  • In the Press New Shortcut Key field press the desired key combination  (I recommend ALT + K) and select the Assign button, then close all of the dialogue boxes.

This tool does not appear to work when selecting macros or third-party commands such as those for PerfectIt via a menu. It will, however, indicate which macro is assigned to a given shortcut.

Swapping User Names

I have a client who wants the user name that appears in my Microsoft Word comments and revisions to match the level of editing being done. For example, in a document I am copyediting my user name should read “copyeditor” and in a document I am proofreading it should read “proofreader.” Manually changing the user name when I switch between documents doesn’t take a lot of time, but it is a bit of a pain to do repeatedly. The manual change also creates the opportunity for misspellings and inconsistencies to creep in.

Figure 1: Each time the macro is run, Word’s user name is set to the next name in the series

To automate changing the user name, I created a macro that steps through a series of names and assigns the next name in the series each time the macro is run. (It also changes the user initials.) After the last name has been assigned, the macro starts again with the first name in the series. Editing the user names in the series involves a little adjustment of the macro’s code but is not too complicated.

Using the Macro

The version of the macro presented below has four user-name-and-initial options. Each time the macro is run, the user name will be updated to the next name in the series and this new user name will appear in the Word status bar (in the lower left corner of the screen) until a key or mouse button is pressed. If you would also like to have a pop-up dialogue box display the updated name, delete the apostrophe in the second to last line, before “MsgBox.”

Manually entering a user name in Word will not affect the way the macro works. If a user name that is not part of the series has been manually entered, the first user name in the series (in this case, “Dev Editor”) will be substituted when the macro is run. While the macro sets user initials, it doesn’t check to see if they have been manually edited. Any manual edits of user initials will be overwritten when the macro is run.

I assign this macro to the keyboard shortcut Alt + u to make it easier to run. If you would like to have this macro automatically add that shortcut, delete the apostrophe in the second line, before “KeyBindings.” You will have to run the macro once manually before the shortcut will be set.

Customizing the User Names

You will likely want to edit the series of user names. This involves a little adjustment of the “case” commands in the macro but is not too complicated of a process. The steps are as follows.

Determine how long of a series you want. To remove a name from the series, delete one set of three lines: a line beginning with “Case” and the following two lines that begin “NewName” and “NewInitials.” Don’t delete the final “Case Else” statement, though. To add a name to the series, duplicate the three lines mentioned above and place them before the final “Case Else” section.

Adjust the user names and initials. On the lines beginning  with “NewName” and “NewInitials” change the text in quotes to the desired user name and initials. Then set the name in the first line that starts with “Case” to match the “NewName” field in the “Case Else” section. Finally, change the name in each of the other “Case” lines to match the “NewName” field in the section that precedes it.


 The Code

Sub Swap_User_Names()
     'KeyBindings.add wdKeyCategoryMacro, "Swap_User_Names", BuildKeyCode(wdKeyAlt, wdKeyU)
     OldName = Application.UserName
     Select Case OldName
         Case "Dev Editor"
             NewName = "Copyeditor"
             NewInitials = "CE"
         Case "Copyeditor" 
             NewName = "Proofreader"
             NewInitials = "PR"
         Case "Proofreader" 
             NewName = "Cold Reader"
             NewInitials = "CR"
         Case Else
             NewName = "Dev Editor"
             NewInitials = "DE"
     End Select
     Application.UserName = NewName
     Application.UserInitials = NewInitials
     StatusBar = "User Name is now " & NewName
     'MsgBox ("User Name is now " & NewName)
 End Sub

Tools for Style Setters

Word users commonly adjust the formatting of text in four ways:

  • Assigning a paragraph style such as No Spacing or Block Text
  • Assigning a character style such as Strong or Emphasis
  • Applying manual paragraph formatting such as indenting and line spacing
  • Applying manual character formatting such as italics or underlining

Users can easily make all of these format adjustments using the ribbon or shortcut keys. However, figuring out after the fact which styles have been applied or where a particular bit of formatting comes from can take some work. The ribbon can indicate some of the formatting that has been applied, but not all of it and not consistently. For example, the Styles section of the ribbon and the Styles pane indicate at most one applied style. If both a paragraph style and a character style have been applied, the field will only indicate the character style. The ribbon also doesn’t disclose whether the indicated style has been overridden by manual adjustments.

A solution to this problem is available via the Style Inspector pane the Reveal Formatting pane. Unfortunately, Microsoft has hidden the former—neither a button on the ribbon nor a built-in shortcut is provided. And access to the latter is only slightly better.

Style Inspector

Figure 1: The Style Inspector Pane

The Style Inspector pane (Figure 1) provides a summary of the formatting applied at the current cursor location, indicating the names of assigned paragraph and character styles (in white fields) and manually applied paragraph and character formatting (in gray fields). Beside each field is a button that allows the user to reset that particular type of formatting. And included at the bottom of the pane are buttons to launch the Reveal Formatting pane, create a new style, and clear all formatting at one time.

While the interface clearly lays things out for the user, more is available if you poke around. If you want to see what formatting the styles provide, you need to hover your cursor over the respective fields. (Or you can bring up the Reveal Formatting pane). The paragraph and character style fields are also drop-down menus that provide access to additional commands. Some of these duplicate the functions of other easier-to-access buttons, though.

Another not-immediately-obvious quirk of this pane is that it provides clearer information if you have placed your cursor within the text you want to analyze rather than selected the text. If you select text that contains more than one paragraph style, the paragraph formatting field will appear empty; the same happens if your selection contains two character styles. But seeing a blank field at least indicates a problem. If, however, you select text containing two or more manual character format changes or paragraph format changes, the field will identify only the first one in the selection. However, the buttons will still remove formatting, whether or not the fields identify it.

Given the usefulness of this pane, why doesn’t it have a predefined shortcut or button to provide access to it? The easiest built-in path is to use the shortcut CTRL + ALT + SHIFT + S to bring up the Styles pane and then press the Style Inspector button (the middle button in the lower left corner of the pane). If you find yourself using Style Inspector frequently, you can create a keyboard shortcut to the “FormattingPaneCurrent” command. Or you can create a quick access toolbar button or ribbon button for the “Style Inspector” command. (Why two different names? Apparently to make things even more complicated.)

NOTE: Microsoft Office Word 2007 Essential Reference for Power Users by Matthew Strawbridge indicates two additional lurking issues. The first is that the manual paragraph styling field does not indicate all types of paragraph formatting. Unfortunately Strawbridge doesn’t state which ones. The second is that the text-level field will not indicate that any formatting has been applied if you place the cursor at either end of a stretch of formatted text.

Reveal Formatting

Figure 2: The Reveal Formatting Pane

The Reveal Formatting pane (Figure 2) provides a detailed list of formatting at the font, paragraph, and section levels and acts as a nice supplement to the Style Inspector. The “Distinguish style source” toggle, located at the bottom of the pane, adds headings to the list to clarify which formats have been manually applied and which are applied via a style. This is particularly useful because it indicates when a paragraph style includes character-level formatting. The “selected text” field is also a drop-down menu providing access to a few additional commands.

Another useful feature is the “Compare to another selection” option that indicates how the format of two selections differ. This tool is toggled on and off using the control near the top of the pane.

Unlike Style Inspector, Reveal Formatting does have a predefined shortcut key: Shift + F1. Unfortunately, it does not include a button to launch the Style Inspector. (This is another reason to set up a Style Inspector shortcut).

As with all Word features, Reveal Formatting isn’t perfect:

  • The “Show all formatting marks” toggle at the bottom on the page simply duplicates the “show/hide ¶” toggle on the ribbon.
  • This pane doesn’t provide any way to adjust styles, though there is a Clear Formatting option under the Selected Text drop-down menu.
  • If the selected text contains more than one character or paragraph style, the field only identifies the first style. Multiple applications of manually applied styling also causes this misreporting.
  • The drop-down menu commands “Apply formatting of surrounding text” and “Clear formatting” really only work as expected when applied to selections.

Counting Words by Chapter

When starting a new project I have found it very useful to develop a chapter-by-chapter word count for the manuscript: this lets me make sure my pace isn’t too fast or too slow and helps me develop a schedule for how many chapters per day I should cover. Developing this count by hand isn’t particularly efficient, so I recently decided to hunt down a macro to handle this work for me.

After a bit of online searching I found a macro posted by onesecondglance that did what I wanted. However it took a long time to analyze book-length Word documents, even after extensive rewriting. To replace it I developed new a macro using code by CuberChase as a starting point.

This macro queries the user for the name of the Word style applied to chapter headings (“Heading 1” is the default) and then counts words from the start of one heading to the start of the next. It also counts any words that appear before the first heading. It then creates a new word document and inserts into it the name of each chapter followed by that chapter’s word count. A tab character is inserted between each chapter name and word count so that the contents can be easily cut and pasted into an Excel spreadsheet.

As written the macro does have a few limitations, which I may get around to addressing if they present a problem:

  • It considers anything formatted using the heading style to be a heading, including blank lines, so make sure that the style is only applied to actual headings.
  • It does not count text in footnotes, endnotes or text boxes.
  • It does not like hidden track changes in headings and has been written to display all revisions before running. Because of this it will extract both the original and revised heading text.

 


The Code

Sub Chapter_Word_Count()
'Based on code from: http://stackoverflow.com/questions/17218587/how-to-parse-ms-word-document-by-style-with-vba

	Dim iCount As Integer
	Dim iArrayCount As Integer
	Dim bFound As Boolean
	Dim rParagraphs As Range
	Dim lCurPos As Long
	Dim iParNum As Integer
	Dim iOffset As Integer
	Dim rBody As Range
	Dim sMyStyle As String

        With ActiveWindow.View.RevisionsFilter
            .Markup = wdRevisionsMarkupAll
            .View = wdRevisionsViewFinal
        End With

	'Initialize 100-entry array
	Dim sArray() As String
	iArrayCount = 100
	iOffset = 0
	ReDim sArray(1 To 3, 1 To iArrayCount)

	'Collect name of style type
	sMyStyle = InputBox("What is the name of the Word style used for chapter headings?", "Count Chapter Words", "Heading 1")
	Application.ScreenUpdating = False

	'Move to top of the document
	Selection.HomeKey Unit:=wdStory

	'Set search parameters and look for the first instance
	With Selection.Find
		.ClearFormatting
		.Text = ""
		.Replacement.Text = ""
		.Forward = True
		.Wrap = wdFindContinue
		.Format = False
		.MatchCase = False
		.MatchWholeWord = False
		.MatchKashida = False
		.MatchDiacritics = False
		.MatchAlefHamza = False
		.MatchControl = False
		.MatchByte = False
		.MatchAllWordForms = False
		.MatchSoundsLike = False
		.MatchFuzzy = False
		.MatchWildcards = True
		.Style = sMyStyle
		.Execute
	End With

	'If found start loop to check for entries
	'counter added to avoid endless loops
	Do While Selection.Find.Found = True And iCount < 1000
	iCount = iCount + 1
	'Add results to array 
	If Selection.Find.Found Then 

		bFound = True
		lCurPos = ActiveDocument.Bookmarks("\EndOfSel").Start
		Set rParagraphs = ActiveDocument.Range(Start:=0, End:=lCurPos) 
		iParNum = rParagraphs.Paragraphs.Count 

		'Check array size and resize if necessary 
		If ii Mod iArrayCount = 0 Then ReDim Preserve sArray(1 To 3, 1 To UBound(sArray, 1) + iArrayCount) 
		'add an initial entry if doc doesn't start with a heading 
			If iCount = 1 And iParNum > 1 Then
				sArray(2, iCount) = "[Before first heading] "
				sArray(3, iCount) = 1
				iOffset = 1
			End If

			sArray(2, iCount + iOffset) = Selection.Text
			sArray(3, iCount + iOffset) = iParNum

			'Reset the find parameters
			Selection.Find.Execute
		End If
	Loop

	If bFound Then
		'Finalise the array to the actual size
		ReDim Preserve sArray(1 To 3, 1 To iCount + iOffset)

		'Calculate chapter lengths, including length of chapter heading
		For ii = LBound(sArray, 2) To UBound(sArray, 2) - 1
			'Select range of paragraphs to measure
			Set rBody = ActiveDocument.Range(Start:=ActiveDocument.Paragraphs(CInt(sArray(3, ii))).Range.Start, _
                        End:=ActiveDocument.Paragraphs(CInt(sArray(3, ii + 1)) - 1).Range.End)
			sArray(1, ii) = rBody.ComputeStatistics(wdStatisticWords)
		Next ii
			Set rBody = ActiveDocument.Range(Start:=ActiveDocument.Paragraphs(CInt(sArray(3, UBound(sArray, 2)))).Range.Start, _
                        End:=ActiveDocument.Bookmarks("\EndOfDoc").Range.End)
			sArray(1, UBound(sArray, 2)) = rBody.ComputeStatistics(wdStatisticWords)

		'Output results to a new document
		Application.ScreenUpdating = True
		Documents.Add
		For ii = LBound(sArray, 2) To UBound(sArray, 2)
			Selection.Text = Left(sArray(2, ii), Len(sArray(2, ii)) - 1) & Chr(9) & sArray(1, ii) & Chr(10)
			Selection.MoveRight wdCharacter, 1
		Next ii
		'If no headings found, return alternate message
		Else
			MsgBox "This document does not use the style " & sMyStyle, vbExclamation + vbOKOnly, "Bad Style Name"
	End If
End Sub

 

An Inline Commenting Macro

Inline comments—that is, comments inserted within the body of a document—can be a very useful alternative to Word’s built-in Comments tool (in a previous post I discuss their pros and cons). However, formatting them so that they stand out from the text requires a few extra keystrokes for each comment.

To make formatting less labor intensive, I cooked up a short macro (presented below) that automates the process. Its operation is very simple. If the user types a comment, selects it, and runs the macro, the comment will be reformatted: braces will be placed on either end of the comment, and the braces and comment will have the built-in Word style Strong applied to them. If the macro is run without any text being selected, a set of braces will be inserted, the Strong style will be applied to them, and the cursor placed between the braces, allowing a comment to be easily entered. For the macro to really save you work, you will need to assign it a keyboard shortcut (I use Ctrl+Alt+q).

Using a Word style allows all comments to be quickly reformatted by changing the definition of the style. It also allows all comments to be quickly selected using the Select All option in the Styles toolbar; this can be handy if you want to quickly delete or copy all comments. The macro’s use of the predefined Strong style can be a problem if you are using that style for other content in your document, but this can be fixed by changing the name of the style referenced in the macro. Since the macro applies one style to all comments, color-coding isn’t supported. However, if you prefer to color-code comments, one option is to replace the line in the macro stating

Selection.Range.Style = wdStyleStrong

with

Selection.Range.HighlightColorIndex = Options.DefaultHighlightColorIndex

to apply the current highlighting color, rather than a text style, to each inline comment as it is created.

Note: While poking around on the internet recently, I came across a similar but more elaborate set of macros, created by Professor Benjamin L. Read, for working with inline notes. If you are interested in color-coding your notes, his macros might be useful to try out.

 


The Code

Sub InsertInlineComment()
'Written by Michael Schuler, 2014.
'Recommended shortcut: CTRL+ALT+q
    Set myRange = Selection
    myRange.InsertBefore " {"
    myRange.InsertAfter "} "
    Selection.Range.Style = wdStyleStrong
    Selection.MoveLeft Count:=1
    Selection.MoveRight Count:=2
End Sub

 

Get Inline

I’ve been curious for some time about the pros and cons of using inline comments—that is, queries inserted into the body of a document rather than created in the margin using Word’s Comments tool. I have used inline comments in a few documents, to accommodate authors who had problems using the Comments tool, but I have never been able to find much in the way of guidance in editing books or online. So earlier this year I asked fellow members of the Editorial Freelancers Association (EFA) what they thought about inline commenting. I received a lot of useful information and thought it would be helpful to create a brief summary of what I heard. In a companion post I provide a short macro that I developed to automate the process of creating and formatting inline comments.

I was surprised to find that (at least among the EFA members who responded) many editors prefer to create inline comments. Reasons given for this preference included the following:

  • Working with inline comments is easier for authors who are not familiar with Word’s Comments tool (that is, most authors).
  • Authors can more easily see comments—if they are formatted well—and identify the parts of the text they pertain to.
  • Inline comments can be inserted into footnotes, while comments made with the Comments tool cannot. (A work-around for using the Comments tool with footnotes is to attach the comment to the footnote superscript, but this requires the reader to jump back and forth between the note and the comment.)
  • Inserting and editing inline comments can be faster and easier, particularly for editors who use the revision pane.
  • Editors can add queries while keeping a split screen open. (I did not have any problems using the Comments tool in Word 2013 while the screen was split, but this might be a problem with older versions of Word.)

A few downsides to using inline comments were also mentioned, although there are solutions that address most of these problems.

  • Comments can be accidentally left in a document if they are not highly visible or if proofreading is not thorough enough. This problem can be avoided by formatting comments so that they are highly visible and by using a comment format (discussed below) that facilitates mass deletion using the search-and-replace function.
  • Inline comments interrupt the text and can distract readers. One way to solve this issue is to use the Hidden text effect (which is set in the Font menu) to format comments. You can then use the “Show/Hide ¶” button to turn the display of hidden content on and off (this displays all hidden content, but in a future post I’ll provide a macro that displays only hidden text).
  • Inline comments will throw off the word count for a document. This problem is also avoided by making comments hidden, as hidden text isn’t counted.
  • Tools designed to extract comments created with Word’s Comments tool will not work with inline comments. While this is true, a macro to extract inline comments could be created fairly easily.

So on the whole there appear to be some very good reasons to use inline comments, and the weaknesses inherent in this approach can be minimized, if not eliminated altogether.

Formatting inline comments so that they stand out from the surrounding text is obviously very important. Most of the EFA respondents do this by placing them between [square brackets], <inequality signs>, or similar characters. Use of {braces} seems preferable to me because these characters are rarely used for other purposes, making searching faster. Use of [[doubled brackets]] has similar benefits.

To improve the visibility of inline comments, text is commonly highlighted, bolded, or both. Using a character style to apply this formatting is very efficient and makes a number of tasks, including searching for, reformatting, and selecting inline comments, easier.

I would like to thank the EFA members who responded to my questions about inline comments: Maxine Idakus, Sophia Gray, Elaine R. Firestone, Deborah Wenger, Monica Payson, Dr. Hilary Cadman, Gloria Sturzenacker, Marta Tanrikulu, Ann Robertson, Michael Huber, Hilary Powers, Pat Dobie, and Lise Lingo.

I am interested in hearing about your experiences with inline comments, so please feel free to let me know if you have any opinions on the subject.