如何在两个特定列之间设置VPageBreak?

时间:2014-09-08 07:13:51

标签: excel vba excel-vba

我在VBA中编写了一个小工具,生成一张包含一些统计信息的工作表。 我想自动拥有一个可打印的工作表,所以我将VPageBreak设置为:

ActiveWindow.View = xlPageBreakPreview
ActiveSheet.VPageBreaks(1).DragOff Direction:=xlToRight, RegionIndex:=1  
ActiveWindow.View = xlNormalView

起初这个工作得很好。但是这个生成的工作表的内容是基于另一个工作表中的数据,当这个数据发生变化时,DragOff-Command引发了一个错误。 发生错误的原因是VPageBreak现在自动设置在无法进行Dragoff的地方。

我需要可靠的代码,不依赖于原始数据...... 有没有办法说"我想在E&E列后的这个VPageBreak"?

提前致谢

1 个答案:

答案 0 :(得分:1)

为了帮助您入门,请尝试此操作...

Sub SetPageBreaks()
Dim MySh As Worksheet

    Set MySh = ActiveWorkbook.Worksheets("Sheet1")
    MySh.VPageBreaks.Add MySh.[E1]
    MySh.VPageBreaks.Add MySh.[J1]

    MySh.HPageBreaks.Add MySh.[A5]
    MySh.HPageBreaks.Add MySh.[A10]

    ' removing breaks

    ' note ... page breaks are only counted and accessible as objects
    ' when they intersect with a Print range
    MySh.PageSetup.PrintArea = "A1:J10"
    MySh.HPageBreaks(1).Delete

End Sub

这会在列E和J之前添加垂直页面分隔。无需将VBA切换到PageBreakView,只需设置VPageBreaks属性。

你猜对了,它也是Worksheet对象的HPageBreak属性......

further reading