Проверка соответствия круглых скобок (Microsoft Word)
Если вы не пишете очень короткие документы, очистка может быть одной из самых сложных частей написания. Следующий макрос дважды проверяет ваш документ, абзац за абзацем, чтобы определить, сбалансировано ли у вас количество круглых скобок. Макрос подсчитывает количество левых круглых скобок в каждом абзаце вашего документа и следит за тем, чтобы у вас было одинаковое количество правых скобок. Если вы этого не сделаете, макрос вставит абзац перед несбалансированным абзацем, указывая на ошибку.
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 [Проверка на соответствие круглых скобок]
.