VBAの勉強を始めてみた

色々試しています。

n行おきに改ページさせる

選択範囲内でn行おきに改ページを挿入するマクロです。
例えば、1000行に対して5行ずつ改ページを入れたいときに、200回も手動で改ページなんて入れてられません。
なので、マクロで楽しちゃいましょう。

 

改ページを設定したい矩形範囲を選択し、

f:id:kouten0430:20180421235401j:plain

 

n値を指定します。(仮に2を指定)

f:id:kouten0430:20180421235415j:plain

 

2行おきに改ページが挿入されました。

f:id:kouten0430:20180421235428j:plain

 

範囲選択する手間はありますが、例えば、同じシートの中で

  • 1~50行目までは2行おきに改ページする
  • 50~100行目は5行おきに改ページする
  • 100行目以降は改ページを指定しない(用紙のサイズに合わせる)

のように、お好みで設定することができます。

 

HPageBreaks.Addメソッドを使用した簡単なプログラムです。
※一つのシートに1026を超える改ページは追加できません。

Sub n行おきに改ページを入れる()
    '選択範囲の行数がnで割り切れない場合は下端に改ページは入りません
    Dim n As Variant
    Dim y As Long
    Dim ye As Long
    
    n = Application.InputBox(Prompt:="選択範囲内でn行おきに改ページを入れます", Type:=1)
        If TypeName(n) = "Boolean" Or n < 1 Then
            Exit Sub
        End If
    
    y = Selection.Row   '選択範囲の最初の行
    ye = Selection.Rows(Selection.Rows.Count).Row   '選択範囲の最終行
    
    For i = y To ye + 1 Step n
        If i > 1 Then   '1行目以前に改ページを入れることはできない
            ActiveSheet.HPageBreaks.Add (Cells(i, 1))
        End If
    Next i
    
End Sub

※SubからEnd Subまでをコピーし、標準モジュール等に貼り付けて使用して下さい。なお、マクロで実行した処理は「元に戻す」ことができません。実行前に一旦保存しやり直しのできる状態にしておいて下さい。標準モジュールにコードを貼り付けてマクロを使用する方法はこちら

 

追記:改ページをすべて解除するには?

ページレイアウトタブ → 改ページ → すべての改ページを解除

f:id:kouten0430:20180422121329j:plain

で、行うことができます。