Натан часто сталкивается с проблемой, когда люди пишут названия должностей с заглавной буквы (например, «Финансовый менеджер предоставляет …​») в документах.

Он хотел бы, чтобы макрос проверял каждое использование управленческого титула и переводил его в нижний регистр, если только нет веской причины для инициализации первого слова, когда заголовок начинает предложение. Он задается вопросом, можно ли, не вводя все тридцать управленческих должностей, настроить подстановочный знак для соответствия любой фразе из двух слов, где второе слово — «менеджер» или «менеджеры».

Можно выполнить поиск по шаблону, чтобы найти типы экземпляров, которые вы ищете. Все, что вам нужно сделать, это выполнить расширенный поиск, убедиться, что установлен флажок «Использовать подстановочные знаки», а затем использовать этот шаблон в поле «Найти»:

<[A-Za-z][a-z]{1,}>^32[Mm]anager*>

Шаблон найдет два слова, где второе слово — менеджер или менеджеры. Он найдет слова, если оба слова или одно из них написаны заглавными буквами или оба слова написаны строчными буквами.

Проблема в том, что невозможно изменить слово, найденное с использованием подстановочных знаков, на все строчные буквы. Это означает, что вам нужно вручную проверить, что было найдено, а затем вручную внести необходимые изменения. Если вам нужно делать это только время от времени, это не слишком обременительно, потому что диалоговое окно «Найти и заменить» не является модальным. (Это означает, что вы можете оставить диалоговое окно открытым на экране при редактировании документа, а затем щелкнуть «Найти далее» в диалоговом окне, чтобы найти следующее совпадающее вхождение.)

Если вам нужно делать такие изменения довольно часто, то единственная альтернатива — создать макрос, который будет вносить изменения за вас. Следующий макрос выполняет поиск по шаблону, указанному выше, а затем правильно изменяет регистр заглавных букв в названиях должностей. Макрос находит названия должностей, состоящие из двух слов, причем второе слово — «менеджер», «менеджер», «менеджеры» или «менеджеры». Затем он удаляет все заглавные буквы из слов, если заголовок не начинает предложение, и в этом случае он удаляет только заглавные буквы из второго слова.

Sub FixManagerCapitalisation()

Dim aRange As Range     Dim bRange As Range

With Selection.Find         .ClearFormatting         .Text = "<[A-Za-z][a-z]{1,}>^32[Mm]anager*>"

.Replacement.Text = ""

.Forward = True         .Wrap = wdFindAsk         .MatchCase = False         .MatchWildcards = True         Do While .Execute             Set aRange = Selection.Range             Set bRange = Selection.Range             bRange.MoveEnd unit:=wdSentence             If bRange.Text <> Selection.Sentences(1).Text Then                 aRange = LCase(aRange.Words(1).Text) & Trim(aRange.Words(2))

End If             aRange = aRange.Words(1) & Trim(LCase(aRange.Words(2).Text))

aRange.Start = aRange.End             aRange.Select             .ClearFormatting         Loop     End With End Sub

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

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

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

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

(Microsoft Word — самая популярная программа для обработки текстов в мире.) Этот совет (13080) относится к Microsoft Word 2007, 2010, 2013, 2016, 2019 и Word в Office 365.