2016-07-29 20 views
1

フォーラムに新規参加しました。 VBAの新機能です。動的改ページ

私はマスターシートにアクセスするシート(Sheet1)を持っています。 F1のSheet1には、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

まず、 '選択Case'のこのコードの悲鳴ではなく、複数の' ElseIf's –

+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