Шелли разрабатывает макрос, который изменяет все перестановки заглавных букв в «при условии, что» («при ​​условии, что», «при условии» и т. Д.)

в нижний регистр. Это достаточно легко сделать, но если фраза начинается с предложения, букву «Р» следует писать с заглавной буквы. Шелли задается вопросом, есть ли способ в макросе определить, стоит ли такая фраза, как «при условии, что», в начале предложения.

Есть несколько способов сделать это. Во-первых, вы можете использовать «Найти и заменить» для последовательного поиска и замены. Макрос может делать следующее:

  1. Измените все варианты «при условии» на строчные.

  2. Найдите «. При условии, что» (точка, пробел, «при условии») и замените его на «. При условии» (правильное использование заглавных букв).

  3. Повторите поиск и замените на шаге 2, используя другие знаки препинания в конце предложения, такие как восклицательный знак, вопросительный знак или любой из этих знаков препинания, за которым следует кавычка.

Поскольку это делается в макросе, процесс должен идти очень быстро.

Вот пример того, что может сработать:

Sub ChangeCase1()

Dim vFindText As Variant     Dim vReplaceText As Variant     Dim orng As Range     Dim i As Long

vFindText = Array(". provided that", _                       "! provided that", _                       "? provided that", _                       "."" provided that", _                       "!"" provided that", _                       "?"" provided that")

vReplaceText = Array(". Provided that", _                          "! Provided that", _                          "? Provided that", _                          "."" Provided that", _                          "!"" Provided that", _                          "?"" Provided that")



' Set all occurrences to lowercase     Set orng = ActiveDocument.Range     With orng.Find         .ClearFormatting         .Replacement.ClearFormatting         Do While .Execute(FindText:="provided that", _           Forward:=True, _           Wrap:=wdFindStop) = True             orng.Select             orng = "provided that"

orng.Collapse wdCollapseEnd         Loop     End With

' Account for end-of-sentence     For i = 0 To UBound(vFindText)

Set orng = ActiveDocument.Range         With orng.Find             .ClearFormatting             .Replacement.ClearFormatting             Do While .Execute(FindText:=vFindText(i), _               MatchCase:=True, _               Forward:=True, _               Wrap:=wdFindStop) = True                 orng.Select                 orng = vReplaceText(i)

orng.Collapse wdCollapseEnd             Loop         End With     Next End Sub

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

Однако вы можете использовать другой подход. Здесь используется довольно скрытая установка для свойства Case: wdTitleSentence. Этот параметр изменяет все символы (за одним заметным исключением) на строчные, а если фраза находится в начале предложения, переводит первый символ на верхний регистр. Вот как вы можете использовать его в макросе:

Sub ChangeCase2()

With Selection.Find         .ClearFormatting         .Wrap = wdFindContinue         .Forward = True         .Format = True         .MatchCase = False         .MatchWildcards = False         .Text = "provided that"

.Execute         While .Found             Selection.Range.Case = wdLowerCase             Selection.Range.Case = wdTitleSentence             Selection.Collapse Direction:=wdCollapseEnd             .Execute         Wend     End With End Sub

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

Я упоминал — если текст «ПРЕДОСТАВЛЕНО» находится в начале предложения, параметр wdTitleSentence по какой-то причине не изменит его на «При условии, что». Однако он без проблем изменит «при условии, что» (которое становится «ПРЕДОСТАВЛЕНО» после установки строчных букв) на «при условии».

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

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

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

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

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