大体でIT
大体でIT
2020/12/12
Excel VBAで、印刷範囲を改ページする方法についてご紹介します。改ページを設定したり、削除したりするには、『PageBreaks』を使います。『HPageBreaks』や『VPageBreaks』を使えば、改ページしている行や列の番号を、取得することができます。
この記事では、印刷範囲を改ページする方法について、ご紹介します。
改ページを設定したり、削除するには、『PageBreaks』を使います。
『HPageBreaks』や『VPageBreaks』を使えば、改ページしている行や列の番号を取得することができます。
印刷範囲を設定する際に、改ページは使えるスキルになりますので、覚えておくと便利です。
では、印刷範囲を改ページする方法について、解説していきます。
改ページを設定
改ページを削除
改ページの行や列の番号を取得
初めに、印刷範囲の改ページについて、ポイントとなるVBAコードを記載しておきます。
VBAコードだけ確認したい場合に、ご活用ください。
'改ページを設定
With ActiveSheet
.Range("D4").PageBreak = xlPageBreakManual '一か所で改ページ
.Rows(4).PageBreak = xlPageBreakManual '水平方向に改ページ
.Columns(4).PageBreak = xlPageBreakManual '垂直方向に改ページ
End With
'改ページを削除
With ActiveSheet
.ResetAllPageBreaks '全ての改ページを削除
.Rows(4).PageBreak = xlPageBreakNone '水平方向の改ページを削除
.Columns(4).PageBreak = xlPageBreakNone '垂直方向の改ページを削除
.Range("D4").PageBreak = xlPageBreakNone '水平方向と垂直方向の改ページを削除
End With
'水平方向の改ページで、行を取得
For Each a In HPageBreaks
Debug.Print a.Location.Row
Next
'垂直方向の改ページで、列を取得
For Each a In VPageBreaks
Debug.Print a.Location.Column
Next
一か所で改ページ
水平方向に改ページ
垂直方向に改ページ
実務では、水平方向と垂直方向の改ページをすることが多いです。
それぞれのVBAコードと、実行した結果を見ていきます。
一か所で改ページのVBAコードが基本となるので、とりあえず解説しておきます。
一か所で改ページは、あまりすることはないと思います。
改ページするには、『PageBreak』を使って『xlPageBreakManual』を入力します。
では、セル範囲の『D5』で、改ページするVBAコードです。
Sub TEST1()
'一か所で改ページ
ActiveSheet.Range("D5").PageBreak = xlPageBreakManual
End Sub
使うシート
セル範囲のD5で改ページ
このVBAコードが基本となって、水平方法と、垂直方向の改ページも、同じように改ページできます。
水平方向の改ページでも、『PageBreak』を使って『xlPageBreakManual』を入力します。
垂直方向なので、『Rows(行)』を使うのがポイントです。
5行目から水平方向に、改ページするVBAコードは次のようになります。
Sub TEST2()
'水平方向で改ページ
ActiveSheet.Rows(5).PageBreak = xlPageBreakManual
End Sub
印刷範囲をあらかじめ設定しておいた、シートを用意しました。
使うシート
こちらのシートで、5行目から水平方向に、改ページしてみます。
水平方向に改ページ
垂直方向の改ページでも、『PageBreak』を使って『xlPageBreakManual』を入力します。
垂直方向なので、『Columns(列)』を使うのがポイントです。
4行目から垂直方向に、改ページするVBAコードは次のようになります。
Sub TEST3()
'垂直方向で改ページ
ActiveSheet.Columns(4).PageBreak = xlPageBreakManual
End Sub
印刷範囲をあらかじめ設定しておいた、シートを用意しました。
使うシート
こちらのシートで、4列目から垂直方向に、改ページしてみます。
垂直方向に改ページ
こんな感じで、水平方向と垂直方向に、改ページをすることができます。
改ページの削除も、改ページを操作する上では、使えるテクニックになってきます。
すべての改ページを削除するには、『.ResetAllPageBreaks』を使います。
改ページを設定したいというときに、すでに改ページがあると設定しづらいので、初めにすべての改ページを削除するといいです。
すべての改ページを削除するVBAコードは、こちらです。
Sub TEST4()
'すべての改ページを解除
ActiveSheet.ResetAllPageBreaks
End Sub
使うシート
こちらのシートで、改ページをすべて削除してみます。
改ページを全て削除
改ページに使った『PageBreak』を使って、『xlPageBreakNone』を入力します。
こちらは、水平方向と垂直方向の改ページがあった場合でも、指定した水平方向の改ページだけを削除する方法です。
5行目からの水平方向の改ページを削除するVBAコードです。
Sub TEST5()
'水平方向の改ページを削除
ActiveSheet.Rows(5).PageBreak = xlPageBreakNone
End Sub
ポイントは、水平方向なので、『Rows(行)』を使っている点です。
水平方向と垂直方向に、改ページしたシートを用意しました。
使うシート
水平方向の改ページを削除
5行目からの水平方向の改ページだけを削除できました。
他の水平方向の改ページや、垂直方向の改ページは残ったままです。
こちらも改ページと同じ『PageBreak』を使って、『xlPageBreakNone』を入力します。
こちらは、水平方向と垂直方向の改ページがあった場合でも、指定した垂直方向の改ページを削除する方法です。
4列目からの垂直方向の改ページを削除するVBAコードです。
Sub TEST6()
'垂直方向の改ページを削除
ActiveSheet.Columns(4).PageBreak = xlPageBreakNone
End Sub
ポイントは、水平方向なので、『Columns(列)』を使っている点です。
水平方向と垂直方向に、改ページしたシートを用意しました。
使うシート
垂直方向の改ページを削除
4列目からの垂直方向の改ページだけを削除できました。
他の垂直方向の改ページや、水平方向の改ページは残ったままです。
ちなみに、一か所で改ページを削除することもできます。
セル範囲の『D5』で、水平方向と垂直方向の、改ページを削除してみます。
Sub TEST7()
'水平方向と垂直方向の改ページを削除
ActiveSheet.Range("D5").PageBreak = xlPageBreakNone
End Sub
水平方向と垂直方向に改ページをしたシートを用意しました。
使うシート
セル範囲の『D5』で、水平方向と垂直方向の、改ページを削除します。
水平方向と垂直方向の改ページを削除
セル範囲の『D5』で、水平方向と垂直方向の改ページが削除されました。
すべての改ページの削除と、水平方向と垂直方向の改ページを削除することが多いです。
水平方向と垂直方向の改ページの位置を取得することができます。
2番目の水平方向の改ページを取得したい、といった場合に使えます。
水平方向の改ページを取得するには、『HPageBreaks』と『Location』を使います。
これで、水平方向に改ページされている、『行』を取得することができます。
Sub TEST8()
'水平方向の改ページでループ
For Each a In ActiveSheet.HPageBreaks
'改ページの行を取得
Debug.Print a.Location.Row
Next
End Sub
『ActiveSheet.HPageBreaks』をコレクションとして使って、水平方向の改ページの位置をループして取得しています。
使うシート
水平方向の改ページで、行を取得
結果は、『3』、『5』、『7』行目が取得できました。
水平方向の改ページは、3、5、7行目なので、正しく、『行』の番号を取得できています。
垂直方向の改ページを取得するには、『VPageBreaks』と『Location』を使います。
これで、垂直方向に改ページされている、『列』を取得することができます。
Sub TEST9()
'垂直方向の改ページでループ
For Each a In ActiveSheet.VPageBreaks
'垂直方向の列を取得
Debug.Print a.Location.Column
Next
End Sub
『ActiveSheet.VPageBreaks』をコレクションとして使って、垂直方向の改ページの位置をループして取得しています。
使うシート
垂直方向の改ページで、列を取得
垂直方向の改ページは、3列目と5列目なので、正しく、『列』の番号を取得できています。
あらかじめ印刷範囲を設定していないと、改ページを設定できません。
印刷設定をしていないシート
これを改ページプレビューすると、印刷範囲が設定されているかがわかります。
改ページプレビュー
印刷範囲を設定していないので、青枠がでてきません。
こんな感じの印刷範囲が設定されていないシートで、改ページを設定してもできません。
印刷範囲を設定していないシートで、改ページを設定してみます。
印刷範囲を設定していないシート
Sub TEST10()
'改ページをする
ActiveSheet.Range("D4").PageBreak = xlPageBreakManual
End Sub
改ページしてみる
改ページを設定する際は、まず、印刷範囲を設定しておきましょう。
この記事では、印刷範囲を改ページする方法について、ご紹介しました。
改ページを設定したり、削除するには、『PageBreak』を使います。
改ページしている行や列を取得するには、『HPageBreaks』や『VPageBreaks』を使うとできます。
印刷範囲の設定には、改ページするスキルが必要になってきますので、覚えておくと便利です。
参考になればと思います。最後までご覧くださいまして、ありがとうございました。