Excelで作成した資料を印刷する前に「全部で何ページになるか」をマクロで取得したり、編集作業中に表示される「改ページの点線が煩わしい」と感じたりすることはありませんか?
VBAを使えば、これらの情報を簡単に取得・操作することが可能です。この記事では、実務で役立つ2つの短いコード、**「印刷総ページ数を計算する方法」と「改ページの区切り線の表示・非表示を切り替える方法」**を解説します。
印刷の総ページ数を取得する方法
シートが印刷時に合計で何ページになるかは、水平・垂直両方の改ページ(PageBreak)の数を数えることで計算できます。
コードと解説
Sub ShowTotalPrintPages()
' 変数を宣言します
Dim targetSheet As Worksheet
Dim horizontalBreaks As Long
Dim verticalBreaks As Long
Dim totalPages As Long
' 現在アクティブなシートを操作対象に設定
Set targetSheet = ActiveSheet
' 水平方向(横)の改ページの数を取得
horizontalBreaks = targetSheet.HPageBreaks.Count
' 垂直方向(縦)の改ページの数を取得
verticalBreaks = targetSheet.VPageBreaks.Count
' 総ページ数を計算
totalPages = (horizontalBreaks + 1) * (verticalBreaks + 1)
' 結果をメッセージボックスで表示
MsgBox "このシートの総印刷ページ数は " & totalPages & " ページです。"
End Sub
この計算のポイントは、**「ページの数 = 改ページの数 + 1」**という関係が成り立つ点です。
- 横方向に1つも改ページがなければ、横のページ数は1です (
0 + 1 = 1
)。 - 横方向に1つ改ページがあれば、横のページ数は2です (
1 + 1 = 2
)。
総ページ数は、この**「横方向のページ数」と「縦方向のページ数」を掛け合わせる**ことで求められます。このコードは、印刷範囲の設定や拡大縮小率を反映した現在の状態でのページ数を返します。
改ページの点線を非表示にする方法
一度印刷プレビューなどを行うと、シート上にページの区切りを示す点線が表示されます。この表示は、VBAで簡単にオン・オフを切り替えることができます。
コードと解説
Sub HidePageBreakLines()
' 現在のシートの改ページの点線を非表示にする
ActiveSheet.DisplayPageBreaks = False
End Sub
Sub ShowPageBreakLines()
' 現在のシートの改ページの点線を表示する
ActiveSheet.DisplayPageBreaks = True
End Sub
.DisplayPageBreaks
は、ワークシートが持つプロパティ(設定値)の一つです。
ActiveSheet.DisplayPageBreaks = False
: この値をFalse
にすると、点線が非表示になります。ActiveSheet.DisplayPageBreaks = True
: この値をTrue
にすると、点線が表示されます。
これらのマクロをクイックアクセスツールバーなどに登録しておくと、ボタン一つで表示を切り替えられるようになり、編集作業が快適になります。
まとめ
今回は、印刷と表示に関する2つの便利なVBAテクニックをご紹介しました。
- 総ページ数の取得:
(HPageBreaks.Count + 1) * (VPageBreaks.Count + 1)
で計算できる。 - 改ページの点線の表示/非表示:
ActiveSheet.DisplayPageBreaks
プロパティの値をTrue
またはFalse
に設定する。
どちらも短いコードで実現できるため、ご自身のマクロに組み込んだり、日々の業務効率化ツールとして活用したりしてみてください。