Word.Tips.Net Welcome toWord.Tips.Net

Helpful Links

Tips.Net Home
WordTips Home

Ask a Word Question
Make a Comment

Tips.Net Store

WordTips FAQ
WordTips Premium

Learn Access Now

Beauty Tips
Car Tips
Cleaning Tips
College Tips
Cooking Tips
Excel2007 Tips
ExcelTips
Family Tips
Gardening Tips
Health Tips
Home Tips
Money Tips
Organizing Tips
Pest Tips
Pet Tips
Wedding Tips
Word2007 Tips
WordTips

Advertise on the
WordTips Site

Newest Tips

Underlining Quoted Text

Changing Tabs Using the Ruler

Moving Drawing Objects

Standardizing Note Reference Placement

Selecting Printing of Color Pictures

Stubborn Foreign Languages

Sizing the Preview Pane

 

Checking for Matching Parentheses

Summary: There are lots of little "gottchas" that can make the difference between a finished document and a polished document. One such thing is making sure that you have matching parentheses—a closing parenthesis for every opening one. This tip presents a macro that can make quick work of this check and notify you if there is a potential problem. (This tip works with Microsoft Word 97, Word 2000, Word 2002, Word 2003, and Word 2007.)

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

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

    MsgText = "***Unbalanced parens in the next paragraph"
    For J = 1 To NumPara
        CheckP(J) = False
        WorkPara = ActiveDocument.Paragraphs(J).Range.Text
        If Len(WorkPara) <> 0 Then
            LeftParens = CountChars(WorkPara, "(")
            RightParens = CountChars(WorkPara, ")")
            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.

Tip #1308 applies to Microsoft Word versions: 97 | 2000 | 2002 | 2003 | 2007

More Power! For some people, the prospect of creating Word macros can be scary. WordTips: The Macros can help you conquer your fears and you'll discover you're much more confident and productive as you make Word do exactly what you want. This is an invaluable source for learning macros. You are introduced to the topic in bite-sized chunks, pulled from past issues of WordTips. Learn at your own pace, exactly the way you want.
 
Check out WordTips: The Macros today!