Если вы не пишете очень короткие документы, очистка может быть одной из самых сложных частей написания. Следующий макрос дважды проверяет ваш документ, абзац за абзацем, чтобы определить, сбалансировано ли у вас количество круглых скобок. Макрос подсчитывает количество левых круглых скобок в каждом абзаце вашего документа и следит за тем, чтобы у вас было одинаковое количество правых скобок. Если вы этого не сделаете, макрос вставит абзац перед несбалансированным абзацем, указывая на ошибку.

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

Обратите внимание, что на самом деле здесь есть два макроса. Функция CountChars вызывается из основного макроса CheckParens. Именно этот последний макрос (CheckParens) вы должны вызывать в своем документе. Когда макрос будет завершен, вы можете выполнить поиск по документу, ища формулировку «Несбалансированные скобки», чтобы увидеть, где могут возникнуть проблемы.

Также обратите внимание, что способ написания этого макроса позволяет легко изменить его для поиска других «парных» символов. Все, что вам нужно сделать, это изменить то, что присвоено переменным OpenChar, CloseChar и MsgText. Например, если вы хотите проверить наличие несовпадающих скобок, вы можете изменить эти переменные следующим образом:

OpenChar = "["

CloseChar = "]"

MsgText = "Unbalanced brackets in the next paragraph"

_Примечание: _

Если вы хотите знать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах WordTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / wordribbon-WordTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

WordTips — ваш источник экономичного обучения работе с Microsoft Word.

(Microsoft Word — самая популярная программа для обработки текстов в мире.) Этот совет (1018) применим к Microsoft Word 2007, 2010, 2013 и 2016. Вы можете найти версию этого совета для старого интерфейса меню Word здесь:

link: / word-Checking_for_Matching_Parentheses [Проверка на соответствие круглых скобок].