Please Note: This article is written for users of the following Microsoft Word versions: 2007, 2010, 2013, 2016, 2019, 2021, 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: Checking for Matching Parentheses.

Checking for Matching Parentheses

Written by Allen Wyatt (last updated September 7, 2024)
This tip applies to Word 2007, 2010, 2013, 2016, 2019, 2021, and Word in Microsoft 365


5

Unless you are writing very short documents, cleaning up can be one of the hardest parts of writing. The following macro double-checks your document, paragraph by paragraph, to determine if you have a balanced number of parentheses. The macro counts the number of left parentheses in each paragraph of your document and makes sure you have the same number of right parentheses. If you don't, the macro inserts a paragraph before the unbalanced paragraph indicating the error.

Sub CheckParens()
    Dim WorkPara As String
    Dim CheckP() As Boolean
    Dim NumPara As Integer, J As Integer
    Dim LeftParens As Integer, RightParens As Integer
    Dim MsgText As String
    Dim OpenChar As String
    Dim CloseChar As String

    OpenChar = "("
    CloseChar = ")"
    MsgText = "***Unbalanced parens in the next paragraph"

    NumPara = ActiveDocument.Paragraphs.Count
    ReDim CheckP(NumPara)

    For J = 1 To NumPara
        CheckP(J) = False
        WorkPara = ActiveDocument.Paragraphs(J).Range.Text
        If Len(WorkPara) <> 0 Then
            LeftParens = CountChars(WorkPara, OpenChar)
            RightParens = CountChars(WorkPara, CloseChar)
            If LeftParens <> RightParens Then CheckP(J) = True
        End If
    Next J

    For J = NumPara To 1 Step -1
        If CheckP(J) Then
            Selection.HomeKey Unit:=wdStory, Extend:=wdMove
            If J > 1 Then
                Selection.MoveDown Unit:=wdParagraph, _
                  Count:=(J - 1), Extend:=wdMove
            End If
            Selection.InsertParagraphBefore
            Selection.MoveLeft Unit:=wdCharacter, Count:=1
            Selection.Style = "Normal"
            Selection.TypeText Text:=MsgText
        End If
    Next J
End Sub

Private Function CountChars(A As String, C As String) As Integer
    Dim Count As Integer
    Dim Found As Integer

    Count = 0
    Found = InStr(A, C)
    While Found <> 0
        Count = Count + 1
        Found = InStr(Found + 1, A, C)
    Wend
    CountChars = Count
End Function

Note that there are actually two macros here. The CountChars function is called from within the main CheckParens macro. It is this latter macro (CheckParens) that is the one you should actually invoke on your document. When the macro is finished, you can search through the document, looking for the wording "***Unbalanced parens" to see where you may have problems.

Note, as well, that the way this macro is written, you could easily modify it to search for other "paired" characters. All you would need to do is change what is assigned to the OpenChar, CloseChar, and MsgText variables. For instance, if you wanted to check for unmatched brackets, you could change those variables in this way:

    OpenChar = "["
    CloseChar = "]"
    MsgText = "***Unbalanced brackets in the next paragraph"

Note:

If you would like to know how to use the macros described on this page (or on any other page on the WordTips sites), I've prepared a special page that includes helpful information. Click here to open that special page in a new browser tab.

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

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

Adding Graphics to a Header or Footer

Excel makes it easy to add graphics to a header or footer, as long as you are using at least Excel 2002. Here's the steps ...

Discover More

Understanding Master and Subdocuments

Most people use Word to create regular documents that you edit, view, and print. The program also allows you to create a ...

Discover More

Smart Quote after Em Dash Faces Wrong Direction

When using smart quotes in your typing, Word tries its best to figure out which way the quote you just typed should face. ...

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)

Copying Red Text to a New Document

Need to copy all the red text in your document to a different document? There are several ways you can approach the task; ...

Discover More

Checking for a List of Phrases in a Document

Once you start amassing quite a few documents, it is not uncommon to want to change phrases commonly used in those ...

Discover More

Symbols for Non-Printing Characters

Displaying non-printing characters can help you better understand the formatting and contents of your documents. What do ...

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 three more than 1?

2024-09-08 07:08:40

Dori Schmetterling

Thank you, Tomek.
Now I see it.
My next challenge: how to deploy a macro; never done it before but, I am hopeful, I'll manage :-)


2024-09-08 06:15:56

sandeep

Kiwerry, please give me details.
sandeepkothari2010@gmail.com


2024-09-07 19:57:13

Tomek

@Dori Schmetterling
Read the tip again, the last paragraph and the following code has your answer.
May be Allen added it after you read it in reaction to your comment.
🦋


2024-09-07 08:37:39

Dori Schmetterling

Can I get this to work for brackets? I quite often open a bracket but forget to insert the closing bracket.
Thanks.


2024-09-07 06:15:36

Kiwerry

Thanks very much for a useful tool, Allen.
I modified it slightly by adding a couple of lines to inform the user how many problematical paragraphs had been found, and telling him/her how to locate them. If any reader wants details, add a comment here.


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.