Автор Тема: Word VBA Макросы: Можно ли на автоматически использовать команду 'Разделить список' на всех пунктах списка выделенного фрагмента?  (Прочитано 79 раз)

Оффлайн Dymok

  • Посетитель форума
  • Сообщений: 3
Интересует использование команды 'Разделить список' с помощью макроса только у списков в выбранном фрагменте текста.
Команда 'Разделить список' запускается из контекстного меню. Контекстное меню запускается щелчком правой мыши по маркеру списка или просто внутри пункта списка.
Команда 'Разделить список' есть у маркированных списков. Но в официальной справке ещё упоминается нумерованный список, но для нумерованного списка в контекстном меню нет пункта 'Разделить список'.

Онлайн Администратор

  • Administrator
  • Сообщений: 1637
Макрос
Sub Макрос()

    Dim ListPars As ListParagraphs, i As Long
   
   
    '1. Отключение монитора. Может быть это ускорит макрос и чтобы не мерцало.
    Application.ScreenUpdating = False
   
    '2. Запоминаем выделенные пункты списка, чтобы потом не обращаться к объекту 'Select',
        ' т.к. метод 'SeparateList' будет изменять выделение.
    Set ListPars = Selection.Range.ListParagraphs
   
    '3. Включение перехватчика ошибок. Ошибка будет в этих случаях:
        '1) если перед пунктом списка нет пункат списка;
        '2) если пункт уже отделён.
    On Error Resume Next
   
    '4. Отделение каждого пункта в отдельный список.
    ' Двигаемся по всем пунктам списка в выделенном фрагменте.
        ' Используется цикл с 'i', т.к. 'For Each' двигается в непредсказуемом
        ' направлении, а не сверху вниз по пунктам.
    For i = 1 To ListPars.Count
        ' Отделение пункта от вышестоящего.
        ListPars(i).SeparateList
    Next i
   
    '5. Включение перехватчика ошибок.
    On Error GoTo 0
   
    '6. Включение монитора.
    Application.ScreenUpdating = True
   
End Sub