使用VBA在Excel中插入多个分页符的最快方法

时间:2019-02-28 01:36:22

标签: excel vba

我需要在一个文档中插入多个分页符(几百个),并试图找到最快的方法。我知道在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

将多个分页符添加到工作表中的最快方法是什么?

更新 这是我使用user11121185和Tim Williams的技巧获得的结果。 事实证明,使用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

0 个答案:

没有答案