مگر اینکه اسناد بسیار کوتاهی بنویسید، پاکسازی میتواند یکی از سختترین بخشهای نوشتن باشد. ماکرو زیر سند شما را پاراگراف به پاراگراف دوبار بررسی می کند تا مشخص کند که آیا تعداد پرانتز متعادلی دارید یا خیر. ماکرو تعداد پرانتزهای چپ در هر پاراگراف سند شما را می شمارد و مطمئن می شود که شما به همان تعداد پرانتز سمت راست دارید. اگر این کار را نکنید، ماکرو یک پاراگراف را قبل از پاراگراف نامتعادل وارد می کند که نشان دهنده خطا است.
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) است که در واقع باید در سند خود از آن استفاده کنید. هنگامی که ماکرو به پایان رسید، می توانید در سند جستجو کنید و به دنبال عبارت "***Unbalanced parens" باشید تا ببینید در کجا ممکن است مشکل داشته باشید.
همچنین توجه داشته باشید که نحوه نگارش این ماکرو، می توانید به راحتی آن را برای جستجوی سایر کاراکترهای "جفت شده" تغییر دهید. تنها کاری که باید انجام دهید این است که آنچه را که به متغیرهای OpenChar، CloseChar و MsgText اختصاص داده شده است، تغییر دهید. برای مثال، اگر میخواهید براکتهای بیهمتا را بررسی کنید، میتوانید آن متغیرها را به این شکل تغییر دهید:
OpenChar = "[" CloseChar = "]" MsgText = "***Unbalanced brackets in the next paragraph"