大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、印刷範囲を改ページする方法についてご紹介します。改ページを設定したり、削除したりするには、『PageBreaks』を使います。『HPageBreaks』や『VPageBreaks』を使えば、改ページしている行や列の番号を、取得することができます。

はじめに

この記事では、印刷範囲を改ページする方法について、ご紹介します。

改ページを設定したり、削除するには、『PageBreaks』を使います。

『HPageBreaks』や『VPageBreaks』を使えば、改ページしている行や列の番号を取得することができます。

印刷範囲を設定する際に、改ページは使えるスキルになりますので、覚えておくと便利です。

では、印刷範囲を改ページする方法について、解説していきます。

この記事で紹介すること

  • 改ページを設定
  • 改ページを削除
  • 改ページの行や列の番号を取得

目次から見たい項目へ移動すると便利ですよ。

目次

ポイントとなるVBAコード

初めに、印刷範囲の改ページについて、ポイントとなる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で印刷範囲を改ページする

印刷範囲の改ページは、3種類できます。

  • 一か所で改ページ
  • 水平方向に改ページ
  • 垂直方向に改ページ

実務では、水平方向と垂直方向の改ページをすることが多いです。

それぞれのVBAコードと、実行した結果を見ていきます。

一か所で改ページ

一か所で改ページのVBAコードが基本となるので、とりあえず解説しておきます。

一か所で改ページは、あまりすることはないと思います。

改ページするには、『PageBreak』を使って『xlPageBreakManual』を入力します。

では、セル範囲の『D5』で、改ページするVBAコードです。

Sub TEST1()
    
    '一か所で改ページ
    ActiveSheet.Range("D5").PageBreak = xlPageBreakManual
      
End Sub

こちらのシートで確認します。

使うシート

用意したシート

あらかじめ、印刷範囲を設定してあります。

改ページはされていません。

では、『D5』で改ページをしてみます。

セル範囲のD5で改ページ

一か所で改ページをした結果

一か所で改ページができました。

このVBAコードが基本となって、水平方法と、垂直方向の改ページも、同じように改ページできます。

水平方向に改ページ

水平方向の改ページでも、『PageBreak』を使って『xlPageBreakManual』を入力します。

垂直方向なので、『Rows(行)』を使うのがポイントです。

5行目から水平方向に、改ページするVBAコードは次のようになります。

Sub TEST2()
    
    '水平方向で改ページ
    ActiveSheet.Rows(5).PageBreak = xlPageBreakManual
    
End Sub

印刷範囲をあらかじめ設定しておいた、シートを用意しました。

使うシート

用意したシート

改ページは、されていません。

こちらのシートで、5行目から水平方向に、改ページしてみます。

水平方向に改ページ

5行目から水平方向に、改ページした結果

5行目から水平方向に、改ページできました。

垂直方向に改ページ

垂直方向の改ページでも、『PageBreak』を使って『xlPageBreakManual』を入力します。

垂直方向なので、『Columns(列)』を使うのがポイントです。

4行目から垂直方向に、改ページするVBAコードは次のようになります。

Sub TEST3()
    
    '垂直方向で改ページ
    ActiveSheet.Columns(4).PageBreak = xlPageBreakManual
    
End Sub

印刷範囲をあらかじめ設定しておいた、シートを用意しました。

使うシート

用意したシート

改ページは、されていません。

こちらのシートで、4列目から垂直方向に、改ページしてみます。

垂直方向に改ページ

4列目から垂直方向に、改ページした結果

4列目から垂直方向に、改ページできました。

こんな感じで、水平方向と垂直方向に、改ページをすることができます。

VBAで改ページを削除

つづいて、改ページを削除する方法です。

改ページの削除も、改ページを操作する上では、使えるテクニックになってきます。

すべての改ページを削除

すべての改ページを削除する方法です。

すべての改ページを削除するには、『.ResetAllPageBreaks』を使います。

改ページを設定したいというときに、すでに改ページがあると設定しづらいので、初めにすべての改ページを削除するといいです。

すべての改ページを削除するVBAコードは、こちらです。

Sub TEST4()
    
    'すべての改ページを解除
    ActiveSheet.ResetAllPageBreaks
    
End Sub

改ページをしたシートを用意しました。

使うシート

改ページを用意したシート

こちらのシートで、改ページをすべて削除してみます。

改ページを全て削除

改ページをすべて削除した結果

すべての改ページを削除できました。

印刷範囲のみが残っています。

水平方向の改ページを削除

次は、水平方向の改ページを削除する方法です。

改ページに使った『PageBreak』を使って、『xlPageBreakNone』を入力します。

こちらは、水平方向と垂直方向の改ページがあった場合でも、指定した水平方向の改ページだけを削除する方法です。

5行目からの水平方向の改ページを削除するVBAコードです。

Sub TEST5()
    
    '水平方向の改ページを削除
    ActiveSheet.Rows(5).PageBreak = xlPageBreakNone
    
End Sub

ポイントは、水平方向なので、『Rows(行)』を使っている点です。

水平方向と垂直方向に、改ページしたシートを用意しました。

使うシート

水平方向と垂直方向に改ページしたシート

5行目からの水平方向の改ページを削除します。

水平方向の改ページを削除

5行目からの水平方向の改ページを削除した結果

5行目からの水平方向の改ページだけを削除できました。

他の水平方向の改ページや、垂直方向の改ページは残ったままです。

垂直方向の改ページを削除

垂直方向の改ページを削除する方法です。

こちらも改ページと同じ『PageBreak』を使って、『xlPageBreakNone』を入力します。

こちらは、水平方向と垂直方向の改ページがあった場合でも、指定した垂直方向の改ページを削除する方法です。

4列目からの垂直方向の改ページを削除するVBAコードです。

Sub TEST6()
    
    '垂直方向の改ページを削除
    ActiveSheet.Columns(4).PageBreak = xlPageBreakNone
    
End Sub

ポイントは、水平方向なので、『Columns(列)』を使っている点です。

水平方向と垂直方向に、改ページしたシートを用意しました。

使うシート

水平方向と垂直方向に改ページしたシート

4列目からの垂直方向の改ページを削除します。

垂直方向の改ページを削除

4列目からの垂直方向の改ページを削除した結果

4列目からの垂直方向の改ページだけを削除できました。

他の垂直方向の改ページや、水平方向の改ページは残ったままです。

一か所で改ページを削除

ちなみに、一か所で改ページを削除することもできます。

セル範囲の『D5』で、水平方向と垂直方向の、改ページを削除してみます。

Sub TEST7()
    
    '水平方向と垂直方向の改ページを削除
    ActiveSheet.Range("D5").PageBreak = xlPageBreakNone
    
End Sub

水平方向と垂直方向に改ページをしたシートを用意しました。

使うシート

水平方向と垂直方向に改ページをしたシートを用意

セル範囲の『D5』で、水平方向と垂直方向の、改ページを削除します。

水平方向と垂直方向の改ページを削除

水平方向と垂直方向の改ページを削除した結果

セル範囲の『D5』で、水平方向と垂直方向の改ページが削除されました。

これはあまり使わないですね。

すべての改ページの削除と、水平方向と垂直方向の改ページを削除することが多いです。

VBAで改ページの位置を取得

つづいて、改ページの位置を取得する方法です。

改ページの位置を取得することもできます。

水平方向と垂直方向の改ページの位置を取得することができます。

2番目の水平方向の改ページを取得したい、といった場合に使えます。

水平方向の改ページを取得

まずは、水平方向の改ページを取得する方法です。

水平方向の改ページを取得するには、『HPageBreaks』と『Location』を使います。

これで、水平方向に改ページされている、『行』を取得することができます。

VBAコードはこんな感じです。

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』を使います。

これで、垂直方向に改ページされている、『列』を取得することができます。

VBAコードはこんな感じです。

Sub TEST9()
        
    '垂直方向の改ページでループ
    For Each a In ActiveSheet.VPageBreaks
        '垂直方向の列を取得
        Debug.Print a.Location.Column
    Next
    
End Sub

『ActiveSheet.VPageBreaks』をコレクションとして使って、垂直方向の改ページの位置をループして取得しています。

こちらのシートを使って試してみます。

使うシート

垂直方向に改ページしたシート

では、実行してみます。

垂直方向の改ページで、列を取得

垂直方向の改ページで、列を取得した結果

結果は、『3』列目と『5』列目が取得できました。

垂直方向の改ページは、3列目と5列目なので、正しく、『列』の番号を取得できています。

印刷範囲を設定していないと改ページできない

あらかじめ印刷範囲を設定していないと、改ページを設定できません。

ちょっと注意です。

印刷範囲を設定していないシート

印刷範囲を設定していないシートです。

印刷設定をしていないシート

印刷範囲を設定していないシート

これを改ページプレビューすると、印刷範囲が設定されているかがわかります。

改ページプレビュー

改ページプレビューした結果

印刷範囲を設定していないので、青枠がでてきません。

新規でシートを作成した場合などは、この状態です。

こんな感じの印刷範囲が設定されていないシートで、改ページを設定してもできません。

ちょっとやってみます。

印刷範囲を設定していないシートで改ページ

印刷範囲を設定していないシートで、改ページを設定してみます。

印刷範囲を設定していないシートを用意しました。

印刷範囲を設定していないシート

印刷範囲を設定していないシート

改ページを設定するVBAコードです。

Sub TEST10()
    
    '改ページをする
    ActiveSheet.Range("D4").PageBreak = xlPageBreakManual
      
End Sub

改ページしてみます。

改ページしてみる

印刷範囲を設定していないシートで改ページを設定してみる

エラーとなりました。改ページはできません。

改ページを設定する際は、まず、印刷範囲を設定しておきましょう。

おわりに

この記事では、印刷範囲を改ページする方法について、ご紹介しました。

改ページを設定したり、削除するには、『PageBreak』を使います。

改ページしている行や列を取得するには、『HPageBreaks』や『VPageBreaks』を使うとできます。

印刷範囲の設定には、改ページするスキルが必要になってきますので、覚えておくと便利です。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

アーカイブから探す