动态分页符

时间:2016-07-29 12:55:35

标签: excel vba

论坛新手。 VBA新手。

我有一张工作表(Sheet1),可以访问主工作表。 在Sheet1中,在F1中,有一个下拉菜单,您可以选择从1-27中选择一个数字。 Sheet1中的信息根据数字的选择而变化。

问题: 每个选定的数字都会更改工作表的大小。我试图找出一种根据F1中的数字自动设置分页符的方法。

这是我到目前为止所做的,但它似乎无法奏效:

Sub PageBreaks()
On Error Resume Next
ActiveWindow.View = xlPageBreakPreview
ActiveSheet.ResetAllPageBreaks

If "F1" = 1 Then
    ActiveSheet.HPageBreaks.Add Before:=Rows(43)
    ActiveSheet.HPageBreaks.Add Before:=Rows(85)
ElseIf "F1" = 2 Then
    ActiveSheet.HPageBreaks.Add Before:=Rows(43)
    ActiveSheet.HPageBreaks.Add Before:=Rows(85)
ElseIf "F1" = 3 Then
    ActiveSheet.HPageBreaks.Add Before:=Rows(43)
    ActiveSheet.HPageBreaks.Add Before:=Rows(87)
ElseIf "F1" = 4 Then
    ActiveSheet.HPageBreaks.Add Before:=Rows(43)
    ActiveSheet.HPageBreaks.Add Before:=Rows(88)
ElseIf "F1" = 5 Then
    ActiveSheet.HPageBreaks.Add Before:=Rows(43)
    ActiveSheet.HPageBreaks.Add Before:=Rows(85)
ElseIf "F1" = 6 Then
    ActiveSheet.HPageBreaks.Add Before:=Rows(43)
    ActiveSheet.HPageBreaks.Add Before:=Rows(85)
ElseIf "F1" = 7 Then
    ActiveSheet.HPageBreaks.Add Before:=Rows(43)
    ActiveSheet.HPageBreaks.Add Before:=Rows(92)
ElseIf "F1" = 8 Then
    ActiveSheet.HPageBreaks.Add Before:=Rows(43)
    ActiveSheet.HPageBreaks.Add Before:=Rows(92)
ElseIf "F1" = 9 Then
    ActiveSheet.HPageBreaks.Add Before:=Rows(43)
    ActiveSheet.HPageBreaks.Add Before:=Rows(92)
ElseIf "F1" = 10 Then
    ActiveSheet.HPageBreaks.Add Before:=Rows(43)
    ActiveSheet.HPageBreaks.Add Before:=Rows(92)
ElseIf "F1" = 11 Then
    ActiveSheet.HPageBreaks.Add Before:=Rows(43)
    ActiveSheet.HPageBreaks.Add Before:=Rows(92)
ElseIf "F1" = 12 Then
    ActiveSheet.HPageBreaks.Add Before:=Rows(43)
    ActiveSheet.HPageBreaks.Add Before:=Rows(92)
ElseIf "F1" = 13 Then
    ActiveSheet.HPageBreaks.Add Before:=Rows(43)
    ActiveSheet.HPageBreaks.Add Before:=Rows(92)
ElseIf "F1" = 14 Then
    ActiveSheet.HPageBreaks.Add Before:=Rows(43)
    ActiveSheet.HPageBreaks.Add Before:=Rows(92)
ElseIf "F1" = 15 Then
    ActiveSheet.HPageBreaks.Add Before:=Rows(43)
    ActiveSheet.HPageBreaks.Add Before:=Rows(92)
ElseIf "F1" = 16 Then
    ActiveSheet.HPageBreaks.Add Before:=Rows(43)
    ActiveSheet.HPageBreaks.Add Before:=Rows(92)
ElseIf "F1" = 17 Then
    ActiveSheet.HPageBreaks.Add Before:=Rows(43)
    ActiveSheet.HPageBreaks.Add Before:=Rows(92)
ElseIf "F1" = 18 Then
    ActiveSheet.HPageBreaks.Add Before:=Rows(43)
    ActiveSheet.HPageBreaks.Add Before:=Rows(92)
ElseIf "F1" = 19 Then
    ActiveSheet.HPageBreaks.Add Before:=Rows(43)
    ActiveSheet.HPageBreaks.Add Before:=Rows(92)
ElseIf "F1" = 20 Then
    ActiveSheet.HPageBreaks.Add Before:=Rows(43)
    ActiveSheet.HPageBreaks.Add Before:=Rows(92)
ElseIf "F1" = 21 Then
    ActiveSheet.HPageBreaks.Add Before:=Rows(43)
    ActiveSheet.HPageBreaks.Add Before:=Rows(92)
ElseIf "F1" = 22 Then
    ActiveSheet.HPageBreaks.Add Before:=Rows(43)
    ActiveSheet.HPageBreaks.Add Before:=Rows(92)
ElseIf "F1" = 23 Then
    ActiveSheet.HPageBreaks.Add Before:=Rows(43)
    ActiveSheet.HPageBreaks.Add Before:=Rows(92)
ElseIf "F1" = 24 Then
    ActiveSheet.HPageBreaks.Add Before:=Rows(43)
    ActiveSheet.HPageBreaks.Add Before:=Rows(92)
ElseIf "F1" = 25 Then
    ActiveSheet.HPageBreaks.Add Before:=Rows(43)
    ActiveSheet.HPageBreaks.Add Before:=Rows(92)
ElseIf "F1" = 26 Then
    ActiveSheet.HPageBreaks.Add Before:=Rows(59)
ElseIf "F1" = 27 Then
    ActiveSheet.HPageBreaks.Add Before:=Rows(59)

End If
End Sub

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

请尝试以下代码,我已添加了您的一些案例(并非所有案例)。

我想你试着补充其余的。 (你的一些案例重叠)。

Sub PageBreaks()

On Error Resume Next

ActiveWindow.View = xlPageBreakPreview
ActiveSheet.ResetAllPageBreaks

Select Case Range("F1").Value
    Case 1, 2, 5
        ActiveSheet.HPageBreaks.Add Before:=Rows(43)
        ActiveSheet.HPageBreaks.Add Before:=Rows(85)
    Case 3
        ActiveSheet.HPageBreaks.Add Before:=Rows(43)
        ActiveSheet.HPageBreaks.Add Before:=Rows(87)
    Case 4
        ActiveSheet.HPageBreaks.Add Before:=Rows(43)
        ActiveSheet.HPageBreaks.Add Before:=Rows(88)

    ' add here the rest of your cases, some of the overlap
    'Case ....

End Select

End Sub