Мне нужно вставить несколько разрывов страниц в документ (несколько сотен), и я пытаюсь найти самый быстрый способ.Я знаю, что при работе с большинством операций с листами в Excel быстрее всего группировать их как массив или диапазон, а затем выполнять их все сразу.Но с разрывами страниц я не вижу способа обойтись индивидуально в цикле.Приведенный ниже код работает, но работает медленно
With shtBagCheckList
.Cells.PageBreak = xlPageBreakNone
For i = 13 To lngArrayRows Step 12
.Cells(i, 1).PageBreak = xlPageBreakManual
Next i
End With
Метод, который я иногда использую для применения форматирования, состоит в объединении всех диапазонов, которые требуют одинакового форматирования, в один диапазон, а затем применяет форматирование к объединенному диапазону.Например:
Set rngToBold = Union(rngToBold, Rng2) 'etc in a loop
rngToBold.Font.Bold = True
Но при этом с разрывами страниц разрыв применяется только к первому элементу в диапазоне.Например, при выполнении нижеприведенного только создайте разрыв страницы в строке 12, а не в 24
set rng = range("A12", "A24")
rng.PageBreak = xlPageBreakManual
Какой самый быстрый способ добавить много разрывов страницы на лист?
Обновить Вот результаты, которые я получил, используя советы от пользователя11121185 и Тима Уильямса.Оказывается, использование HpageBreaks.add намного быстрее
1 rng.Page Break, calculation on: 20.594 (45%)
2 rng.Page Break, calculation off: 13.219 (29%)
3 rng.Page Break, calculation off, display breaks off: 11.922 (26%)
4 hbreaks.add,calculation on: 0.018 (0%)
5 hbreaks.add, calculation off : 0.203 (0%)
6 hbreaks.add, calculation off, display page breaks off: 0.312 (1%)
Total Time: 46.267
(отключение расчета означает автоматическое вычисление и обновление экрана отключено)
Использование выглядит следующим образом:
sheet.HPageBreaks.Add sheet.range("A10")
Или:
With shtBagCheckList
.Cells.PageBreak = xlPageBreakNone
For i = 13 To lngArrayRows Step 12
.HPageBreaks.Add .Cells(i, 1)
Next i
End With