Word یک ویژگی بسیار قدرتمند دارد که به شما امکان می دهد تقریباً هر چیزی را زیر نور خورشید جستجو کنید. با این حال، یکی از مواردی که نمی توانید آن را جستجو کنید، مرزهای روی پاراگراف ها است. برای مثال، اگر میخواهید تمام پاراگرافهایی را که حاشیه سمت چپ آنها روشن است را پیدا کنید، نمیتوانید این کار را انجام دهید.
اولین راه حل این است که به سادگی از سبک ها برای قالب بندی پاراگراف ها استفاده کنید. اگر از یک سبک استفاده میکنید، و استایل برای یک پاراگراف حاشیه سمت چپ را فرا میخواند، میتوانید به راحتی پاراگرافها را با استفاده از آن سبک جستجو کنید. (دقیقا نحوه جستجوی سبک ها در سایر شماره های WordTips توضیح داده شده است. )
دومین راه حل ممکن این است که جستجوی خود را با استفاده از یک ماکرو انجام دهید. با استفاده از یک ماکرو، می توانید به راحتی بررسی کنید که آیا مشخصه های مرزی برای یک پاراگراف تنظیم شده است یا خیر. مراحل کلان زیر در هر یک از پاراگراف های یک سند انجام می شود. وقتی پاراگرافی را پیدا کرد که دارای هر یک از ویژگی های مرزی است، آن پاراگراف انتخاب می شود و ماکرو متوقف می شود.
Sub SearchForBorders1()
Dim k As Word.Paragraph
Dim bFound As Boolean
For Each k In ActiveDocument.Paragraphs
bFound = False
If k.Borders(wdBorderTop).LineStyle <> wdLineStyleNone _
Then bFound = True
If k.Borders(wdBorderLeft).LineStyle <> wdLineStyleNone _
Then bFound = True
If k.Borders(wdBorderBottom).LineStyle <> wdLineStyleNone _
Then bFound = True
If k.Borders(wdBorderRight).LineStyle <> wdLineStyleNone _
Then bFound = True
If bFound Then
k.Range.Select
Exit Sub
End If
Next k
End Sub
اگر تعداد زیادی پاراگراف با حاشیه نداشته باشید، این ماکرو می تواند بسیار مفید باشد. چرا؟ زیرا ماکرو همیشه از ابتدای سند شروع به جستجو می کند و بنابراین فقط اولین پاراگراف را با یک مجموعه حاشیه پیدا می کند.
یک رویکرد کلان متفاوت را می توان برای جستجوی مرزها در پاراگراف هایی فراتر از نقطه ای که نقطه درج در آن قرار دارد استفاده کرد. ماکرو زیر دقیقاً این کار را انجام میدهد - بعد از پاراگراف فعلی شروع به جستجو میکند و وقتی به پاراگرافی میرسد که هر یک از ویژگیهای مرزی آن تنظیم شده است، متوقف میشود. توجه داشته باشید که این ماکرو کل پاراگراف را انتخاب نمی کند، بلکه فقط نقطه درج را به پاراگرافی که دارای یک مجموعه مرزی است منتقل می کند.
Sub SearchForBorders2()
Static a As Long, l As Long
Dim b As Boolean
Dim bd As Border
Dim bds As Borders
Dim prg As Paragraph
Dim prgs As Paragraphs
Dim re As Range
Dim se As Selection
Dim doc As Word.Document
Set se = Selection
Set re = se.Range
Set doc = ActiveDocument
If se.Start < l Then a = se.Start
With doc.Content
Set bds = .Borders
re.Start = a
re.End = .End
End With
For Each bd In bds
b = bd = True
If b Then Exit For
Next
If Not b Then Exit Sub
Set prgs = re.Paragraphs
For Each prg In prgs
Set re = prg.Range
If InStr(re.Text, Chr(13)) = 0 Then
re.End = re.End + 1
End If
Set bds = re.Borders
For Each bd In bds
b = bd = True
If b Then Exit For
Next
If b Then
a = re.Start
se.Start = re.Start
se.End = re.Start
a = re.End
l = se.Start
Exit Sub
End If
Next
a = 0
MsgBox "No more borders found"
End Sub