Удалить пустое место при вставке разделителя стилей с помощью vba

Удалить пустое место при вставке разделителя стилей с помощью vba

Всем привет и извините за мой английский: у меня есть макрос, который добавляет разделитель стилей, и он работает нормально, за исключением того, что он добавляет пробел перед абзацем. Как мне изменить макрос так, чтобы он его не добавлял, или если и добавлял, то удалял позже?

Sub SeparadordeEstilos()
 With Selection
            .InsertBefore vbCr
            .InsertStyleSeparator
            .Paragraphs(1).Range.Font.Reset
            .Paragraphs(1).Style = ("PLL Nivel 2 notdc")
End With
End Sub

Отредактировано:

Большое спасибо, Чарльз, и мои извинения всем за то, что не объяснил все детали. Мне нужно, в многоуровневом списке, два типа абзацев с одинаковой нумерацией. Некоторые с жирным шрифтом, которые появляются в оглавлении, а другие с обычным шрифтом, которые не появляются в TOC. Поэтому я создал два стиля,ПЛЛ Уровень 2жирным шрифтом, который появляется в оглавлении иPLL Уровень 2 notdc, без жирного шрифта, который не отображается в оглавлении, которое применяется автоматически с разделителем стилей при выполнении макроса, который я описал в вопросе. Это единственное решение, которое я нашел, чтобы сделать это, особенно из-за требования непрерывной нумерации.

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

Поэтому мне нужна альтернатива или возможность удалить пустое пространство.

Скриншот

Вотобразец документас проблемой. Я думал, что последовательная нумерация работает нормально, потому что я видел ее при включенном Показывать все, но если я ее выключу, (Показать все), она тоже не работает и устанавливает другую нумерацию.

Редактировать 2

Показать новую картинку

решение1

Вам нужен пробел между двумя абзацами!

Ваш код, запущенный в конце абзаца, перед знаком абзаца, добавляетразделитель стилейи пространство, оформленное в новом стиле.

Когда строка .insertBefore vbCrпропущена, как предполагаетРеддии запускается в конце абзаца, добавляет разделитель стилей и пробел, удаляя текущий знак абзаца и перенося следующий абзац в новом стиле так, что он выглядит как один абзац, использующий два стиля абзаца.

Пространство, вероятно, необходимо для применения стиля. Во втором случае, безусловно, необходимо фактически отделить текст первого абзаца от текста второго.

Вы действительно хотите избавиться от этого пространства?

Вот ваш измененный макрос:

Sub InsertStyleSeparator()
' Use at end of paragraph just before paragraph mark.
    With Selection
        '            .InsertBefore vbCr
        .InsertStyleSeparator
        .Paragraphs(1).range.Font.Reset
        .Paragraphs(1).Style = ("PLL Nivel 2 notdc")
    End With
End Sub

Обратите внимание на добавленный мной комментарий: используйте его в конце абзаца, а не в начале.

Вот вашобразец документа, с помощью макроса.

При использовании с разделителем стилей часть, которая добавляется к абзацу, не имеет собственного номера. Она действует, визуально, как часть абзаца, от которого она отделена разделителем стилей.

решение2

vbCrэто новая строка. Эта строка кода .InsertBefore vbCrвставляет новую строку перед вашим стилем. Удалите ее, чтобы избежать пробела перед вашим абзацем.

Связанный контент