2016-07-29 40 views
1

論壇新手。 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 

任何幫助將不勝感激!

+2

首先,這個代碼使用'Select Case'來代替多個'ElseIf'的使用 –

+0

你能詳細點嗎?我以前從未使用Select Case。 – ZiggyStarlust

+0

https://msdn.microsoft.com/de-de/library/cy37t14y.aspx – Dschoni

回答

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 
+0

工作正常!非常感謝你的幫助,我被困在這裏好幾個小時。 – ZiggyStarlust