یوهان سند نسبتا طولانی دارد و پاراگراف هایی وجود دارد که هیچ علامت نگارشی در آنها وجود ندارد. یوهان میخواهد این پاراگرافها را بیابد، از هر پاراگرافهایی که از سبکهای عنوان داخلی استفاده میکنند (سرفصل 1، سرفصل 2 و غیره) صرفنظر کند. او در مورد بهترین راه برای مکان یابی این پاراگراف های بدون نقطه گذاری تعجب می کند.
تنها راه برای انجام چنین کاری استفاده از ماکرو است. خوشبختانه، چنین ماکرویی می تواند بسیار بسیار سریع حتی در اسناد طولانی اجرا شود. ماکرو زیر را در نظر بگیرید:
Sub MarkNoPunc() Dim sPunc As String Dim sParRaw As String Dim sParStyle As String Dim bFoundPunc As Boolean Dim J As Integer Dim K As Integer sPunc = "!?.,;:" For J = 1 To ActiveDocument.Paragraphs.Count sParStyle = ActiveDocument.Paragraphs(J).Style ActiveDocument.Paragraphs(J).Range.HighlightColorIndex = wdAuto If Left(sParStyle, 8) <> "Heading " Then bFoundPunc = False sParRaw = ActiveDocument.Paragraphs(J).Range.Text For K = 1 To Len(sPunc) If InStr(sParRaw, Mid(sPunc, K, 1)) > 0 Then bFoundPunc = True Next K If Not bFoundPunc Then ActiveDocument.Paragraphs(J).Range.HighlightColorIndex = wdYellow End If End If Next J End Sub
ماکرو از هر پاراگراف در سند عبور می کند و نام سبک پاراگراف را به متغیر sParStyle اختصاص می دهد و سپس مطمئن می شود که پاراگراف برجسته نشده باشد. (این کار با تنظیم ویژگی .HighlightColorIndex برابر با ثابت wdAuto انجام می شود.) سپس ماکرو بررسی می کند که آیا سبک با متن "Heading" شروع می شود یا خیر، و اگر این کار را نکرد، سپس متن پاراگراف را در sParRaw قرار می دهد. متغیر.
متن با هر کاراکتر در رشته sPunc بررسی می شود و اگر کاراکتر پیدا شد، متغیر bFoundPunc روی True تنظیم می شود. پس از بررسی هر کاراکتر، اگر bFoundPunc همچنان False باشد، پاراگراف با رنگ زرد برجسته می شود.
شما باید توجه ویژه ای به محتوای متغیر sPunc داشته باشید. همانطور که در ماکرو نشان داده شده است، شامل شش کاراکتر نقطه گذاری مختلف است. محتویات sPunc را تغییر دهید تا مطمئن شوید که حاوی هر کاراکتری است که می خواهید برای رد صلاحیت برجسته کردن یک پاراگراف استفاده شود.