При вводе документа Дрю может ввести три тире, а когда он нажимает Enter, Word преобразует тире в полноразмерную линию. Он задается вопросом, как он может сделать это в макросе.

Функция Word, которая приводит к преобразованию трех тире в линию во всю ширину, — это автоформатирование. Это всего лишь одна из вещей, которая происходит в фоновом режиме, когда вы печатаете — Word постоянно анализирует вводимые символы и действия, которые вы предпринимаете, а затем «помогает вам», выполняя преобразование автоматически. В этом случае вам просто нужно — в новой строке — ввести три дефиса и нажать клавишу Enter. Преобразование в полноразмерную линию выполняется немедленно.

На самом деле, немного интересно, как это делает AutoFormat. Вы могли подумать, что можете записать макрос, чтобы увидеть, что делает Автоформат, но вы не можете. Когда вы включаете Macro Recorder, набираете три тире и нажимаете Enter, Автоформат абсолютно ничего не делает — тире остаются, а линия не появляется.

Итак, полезно использовать другой детективный метод, чтобы выяснить, что происходит. Я открыл совершенно новый документ и убедился, что отображаются непечатаемые символы. (Это необходимо, чтобы вы могли видеть, где знаки абзаца — жесткие возвраты — находятся в документе.) Затем я ввел несколько чисел, чтобы я мог ссылаться на абзацы, но я убедился, что в середине есть «пустой» абзац. (См. Рис. 1.)

image

Рисунок 1. Настройка для теста Автоформат.

Пустой абзац (между абзацами 4 и 5) — это то место, где я собираюсь ввести три тире, чтобы проверить автоформат. Когда я набираю их и затем нажимаю Enter, в результате появляется подчеркивание в абзаце 4. (См. Рис. 2.)

image

Рис. 2. Подчеркивание, добавленное автоформатом.

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

Затем я добавил пустой абзац между абзацами 7 и 8, чтобы увидеть, что делает Автоформат, когда я набираю три символа подчеркивания и нажимаю Enter. Когда я это сделал, произошло то же самое, что отмечалось ранее. Единственная разница заключалась в том, что граница, добавленная к абзацу 7, была тяжелее (она была толще), чем граница, добавленная к абзацу 4. (См. Рис. 3.)

image

Рисунок 3. Подчеркивание, добавленное путем ввода трех подчеркиваний.

Таким образом, ввод трех тире и трех подчеркиваний приводит к добавлению границы к предыдущему абзацу (после удаления абзаца с тире или подчеркиванием), с единственной разницей в весе подчеркивания. Кроме того, если вы внимательно посмотрите на диалоговое окно «Границы и затенение» в приведенных выше случаях, вы заметите, что при вводе трех тире Автоформат использует ширину границы 0,75 пункта, а если вы вводите три символа подчеркивания, он использует ширину границы 1,50 точки.

Воспроизвести это поведение в макросе относительно легко. На самом деле вам не нужно добавлять три дефиса или подчеркивания, а затем удалять их и их абзац; это было бы излишним. Вместо этого макрос может просто перейти к предыдущему абзацу и установить нижнюю границу для этого абзаца.

Sub BottomBorder()

Selection.MoveUp Unit:=wdParagraph, Count:=1     With Selection.Borders(wdBorderBottom)

.LineStyle = wdLineStyleSingle         .LineWidth = wdLineWidth075pt         .Color = wdColorAutomatic     End With End Sub

Если вы хотите имитировать поведение AutoFormat, когда вы вводите три символа подчеркивания и нажимаете Enter, все, что вам нужно сделать, это изменить перечисление wdLineWidth075pt в приведенном выше макросе на wdLineWidth150pt.

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

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