Please Note: This article is written for users of the following Microsoft Word versions: 2007, 2010, 2013, and 2016. 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: Comments in Text Boxes.

Comments in Text Boxes

Written by Allen Wyatt (last updated December 13, 2023)
This tip applies to Word 2007, 2010, 2013, and 2016


5

Text boxes are great for many things, but adding comments is not one of them. Word won't allow you to add comments to text within a text box, as you can to regular text in your document.

If you absolutely must have comments in your text boxes, there are two possible solutions. The first is to work around it by just adding hidden text in the text box. You can make the hidden text visible or invisible, as the need arises. The second potential solution is to not use text boxes, but use frames.

Frames have been available in Word for longer than text boxes. They provide basically the same capabilities, but there are some differences. One of the differences is that you can add comments to text within frames. To convert a text box to a frame, follow these steps if you are using Word 2007:

  1. Make sure that the text box isn't located on a drawing canvas. Just drag the text box outside the boundaries of your drawing canvas. (You can then delete your drawing canvas, if it isn't serving any other purpose.)
  2. Right-click on the border of your text box. Word displays a Context menu.
  3. From the Context menu, choose the Format Text Box option. Word displays the Format Text Box dialog box.
  4. Make sure the Text Box tab is selected. (See Figure 1.)
  5. Figure 1. The Text Box tab of the Format Text Box dialog box.

  6. Click on the Convert to Frame button. Word informs you that by making the conversion, some of the text box's formatting may be lost.
  7. Click on OK.

You can now add comments to the text in the frame.

If you are using Word 2010 or a later version of Word, the above steps won't work. Microsoft has removed the capability to convert a text box into a frame. You can still add frames, but you can't convert. (To add frames you need to customize the Quick Access Toolbar or the ribbon to add the Insert Frame or Insert Frame Horizontal commands.) Why Microsoft removed this conversion capability is a mystery.

WordTips is your source for cost-effective Microsoft Word training. (Microsoft Word is the most popular word processing software in the world.) This tip (10193) applies to Microsoft Word 2007, 2010, 2013, and 2016. You can find a version of this tip for the older menu interface of Word here: Comments in Text Boxes.

Author Bio

Allen Wyatt

With more than 50 non-fiction books and numerous magazine articles to his credit, Allen Wyatt is an internationally recognized author. He is president of Sharon Parq Associates, a computer and publishing services company. ...

MORE FROM ALLEN

Converting All DATE Fields to Text

Fields allow you to add a lot of dynamic information to your documents. One field you can add is the DATE field, which ...

Discover More

Ensuring Compatibility with Older Excel Versions

If you are sharing a workbook with users who aren't using the same version of Excel that you use, there could be some ...

Discover More

Removing Add-ins

Add-ins are used to extend Excel's capabilities in lots of different ways. If you want to get rid of an add-in ...

Discover More

Create Custom Apps with VBA! Discover how to extend the capabilities of Office 365 applications with VBA programming. Written in clear terms and understandable language, the book includes systematic tutorials and contains both intermediate and advanced content for experienced VB developers. Designed to be comprehensive, the book addresses not just one Office application, but the entire Office suite. Check out Mastering VBA for Microsoft Office 365 today!

More WordTips (ribbon)

Adding Comments to Your Document

If you would like to add non-printing notes to your document, the Comments feature is one way of doing that. Here's how ...

Discover More

Changing the User Name in Existing Comments

Want to change the name that Word associates with various comments previously added to your document? Here are some ideas ...

Discover More

Copying, Moving, and Deleting Notes and Comments

Comments or notes are often added to documents to aid in their development. You can use regular editing techniques to ...

Discover More
Subscribe

FREE SERVICE: Get tips like this every week in WordTips, a free productivity newsletter. Enter your address and click "Subscribe."

View most recent newsletter.

Comments

If you would like to add an image to your comment (not an avatar, but an image to help in making the point of your comment), include the characters [{fig}] (all 7 characters, in the sequence shown) in your comment text. You’ll be prompted to upload your image when you submit the comment. Maximum image size is 6Mpixels. Images larger than 600px wide or 1000px tall will be reduced. Up to three images may be included in a comment. All images are subject to review. Commenting privileges may be curtailed if inappropriate images are posted.

What is 7 + 0?

2026-01-12 14:30:17

J. Woolley

My earlier comments below describe RegExp in Function Top10Words2. RegExp defines \w as a word metacharacter equivalent to [A-Za-z0-9_]; however, English dictionaries say words are built from letters, hyphen, and apostrophe, or [A-Za-z-']. Therefore, the following statement in Top10Words2
    RegEx.Pattern = "(\w+)" '\w is the same as [A-Za-z0-9_]
should be replaced by
    RegEx.Pattern = "([A-Za-z-']+)"
For related discussion, see my recent comment here:
https://excelribbon.tips.net/T011792_Returning_the_Final_Word.html


2026-01-11 15:06:23

J. Woolley

Re. my most recent comment below, here's another way to handle ties. In the original version of Function Top10Words2, replace these statements
    For n = 1 To k
        Result(n, 1) = Words(n - 1) 'unique word (case ignored)
        Result(n, 2) = Uniq.Item(Words(n - 1)) 'unique word count
    Next n
    Top10Words2 = Result
with the following statements:
    Dim j As Long 'initially zero
    For n = 1 To k
        If j < Uniq.Count Then
            Result(n, 1) = Uniq.Item(Words(j)) 'unique word count
            Result(n, 2) = Words(j) 'unique word (case ignored)
            j = j + 1
            Do While j < Uniq.Count
                If Uniq.Item(Words(j)) <> Result(n, 1) Then Exit Do
                Result(n, 2) = Result(n, 2) & ", " & Words(j)
                j = j + 1
            Loop
        Else
            Result(n, 1) = vbNullString
            Result(n, 2) = vbNullString
        End If
    Next n
    Top10Words2 = Result
This change combines all the words with equal frequency count into a comma separated group. Notice frequency count is now in the 1st column and words are in the 2nd. The 1st column will no longer contain duplicate count values. You might want to format the 2nd column as Wrap Text.


2026-01-09 12:03:09

J. Woolley

One issue for a list of the top 10 words is how to handle ties; i.e., what if there are more words with the same frequency as the 10th word in the list. Here's a solution for the Top10Words2 function described in my previous two comments below. Replace the final statement
    Top10Words2 = Result
with the following statements:
    If Uniq.Count > 10 Then 'add words with tied Uniq.Item
        For n = k + 1 To Uniq.Count
            If Uniq.Item(Words(n - 1)) < Result(k, 2) Then Exit For
            Result(k, 1) = Result(k, 1) & ", " & Words(n - 1)
        Next n
    End If
    Top10Words2 = Result
This change combines the 10th word in the list with a comma separated group of additional words that have the same frequency. You might want to format that cell as Wrap Text.


2026-01-08 15:46:07

J. Woolley

Sorry. I forgot to format the function. Here's a prettier version:

Function Top10Words2(Target As Variant) As Variant
    'Early binding requires VBE > Tools > References: _
        Microsoft Scripting Runtime _
        Microsoft VBScript Regular Expressions
    Dim Uniq As New Dictionary, Ignor As New Dictionary
    Dim RegEx As New RegExp, expr As Match, n As Long, k As Long
    Dim cell As Variant, word As Variant, Words As Variant, Result As Variant
    Const SKIP As String = "the,and,of,to,a,in,for,on,at,with,is,it,this," _
        & "that,as,be,by,an,or,from,was,were,are,but,not,so,if,then,than," _
        & "too,can,could,would,should,has,have,had,do,does,did,will,shall," _
        & "may,might,must,also,just,about,into,out,up,down,over,under," _
        & "again,still,only" 'consider adjusting this list
    For Each word In Split(SKIP, ",")
        Ignor.Add Key:=word, Item:=Null
    Next word
    RegEx.Global = True
    RegEx.Multiline = True
    RegEx.IgnoreCase = True
    RegEx.Pattern = "(\w+)" '\w is the same as [A-Za-z0-9_]
    For Each cell In Target
        If RegEx.Test(cell) Then
            For Each expr In RegEx.Execute(cell)
                word = LCase(CStr(expr)) 'ignore case
                If Uniq.Exists(word) Then
                    Uniq.Item(word) = Uniq.Item(word) + 1
                ElseIf Not Ignor.Exists(word) Then
                    Uniq.Add Key:=word, Item:=1
                End If
            Next expr
        End If
    Next cell
    Words = Uniq.Keys 'base-0 array
    For n = 0 To UBound(Words) - 1 'bubble-sort Uniq.Items descending
        For k = n + 1 To UBound(Words)
            If Uniq.Item(Words(k)) > Uniq.Item(Words(n)) Then
                word = Words(k)
                Words(k) = Words(n)
                Words(n) = word
            End If
        Next k
    Next n
    k = Uniq.Count
    If k > 10 Then k = 10
    ReDim Result(1 To k, 1 To 2) 'k rows, 2 columns
    For n = 1 To k
        Result(n, 1) = Words(n - 1) 'unique word (case ignored)
        Result(n, 2) = Uniq.Item(Words(n - 1)) 'unique word count
    Next n
    Top10Words2 = Result
End Function


2026-01-08 15:38:56

J. Woolley

Here's an alternate version of the Tip's macro as a user-defined function (UDF) that returns a dynamic array with 10 rows (or less) and 2 columns (word and count). Dictionary and RegExp are more efficient than Collection and Mid. Early binding requires using VB Editor's Tools menu to Reference both Microsoft Scripting Runtime and Microsoft VBScript Regular Expressions libraries. Target can be a cell range (contiguous or not) or an array. If there are no words in Target, #VALUE! error is returned. Like the Tip's macro, text is converted to lower case. This function counts words containing letters (a-z), numbers (0-9), and underscore(_); any other character is a word separator. But the Tip's macro separates words by the space character and only considers words containing letters (a-z); non-letters are simply eliminated from a word, so a hyphenated word like non-letter becomes nonletter and a word like Top10Words2 becomes topwords.

Function Top10Words2(Target As Variant) As Variant
'Early binding requires VBE > Tools > References: _
Microsoft Scripting Runtime _
Microsoft VBScript Regular Expressions
Dim Uniq As New Dictionary, Ignor As New Dictionary
Dim RegEx As New RegExp, expr As Match, n As Long, k As Long
Dim cell As Variant, word As Variant, Words As Variant, Result As Variant
Const SKIP As String = "the,and,of,to,a,in,for,on,at,with,is,it,this," _
& "that,as,be,by,an,or,from,was,were,are,but,not,so,if,then,than," _
& "too,can,could,would,should,has,have,had,do,does,did,will,shall," _
& "may,might,must,also,just,about,into,out,up,down,over,under," _
& "again,still,only" 'consider adjusting this list
For Each word In Split(SKIP, ",")
Ignor.Add Key:=word, Item:=Null
Next word
RegEx.Global = True
RegEx.Multiline = True
RegEx.IgnoreCase = True
RegEx.Pattern = "(\w+)" '\w is the same as [A-Za-z0-9_]
For Each cell In Target
If RegEx.Test(cell) Then
For Each expr In RegEx.Execute(cell)
word = LCase(CStr(expr)) 'ignore case
If Uniq.Exists(word) Then
Uniq.Item(word) = Uniq.Item(word) + 1
ElseIf Not Ignor.Exists(word) Then
Uniq.Add Key:=word, Item:=1
End If
Next expr
End If
Next cell
Words = Uniq.Keys 'base-0 array
For n = 0 To UBound(Words) - 1 'bubble-sort Uniq.Items descending
For k = n + 1 To UBound(Words)
If Uniq.Item(Words(k)) > Uniq.Item(Words(n)) Then
word = Words(k)
Words(k) = Words(n)
Words(n) = word
End If
Next k
Next n
k = Uniq.Count
If k > 10 Then k = 10
ReDim Result(1 To k, 1 To 2) 'k rows, 2 columns
For n = 1 To k
Result(n, 1) = Words(n - 1) 'unique word (case ignored)
Result(n, 2) = Uniq.Item(Words(n - 1)) 'unique word count
Next n
Top10Words2 = Result
End Function

If your version is earlier than Excel 2021, select an empty 10x2 range and use Ctrl+Shift+Enter for a CSE array formula like {=Top10Words2(A1:A999)}.


This Site

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.

Videos
Subscribe

FREE SERVICE: Get tips like this every week in WordTips, a free productivity newsletter. Enter your address and click "Subscribe."

(Your e-mail address is not shared with anyone, ever.)

View the most recent newsletter.