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

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

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

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

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

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

link: / word-Searching_for_Borders [Поиск границ].