こんにちは、Ryoです。
印刷対象のデータ数が多くて複数ページに跨るような場合、各ページに設定しておくと便利なのがタイトルなのですが、VBAでもPrintTitleRows/PrintTitleColumnsプロパティを使用することで設定できますので、今回はその内容について書いていきます。
1.サンプル概要
サンプルとして6ページに跨る簡易的な表を作成しています。
この状態で印刷プレビューを行うと当然ながら2ページ目以降はタイトル部分がありませんので判り難い形になります。
≪1ページ目≫
≪2ページ目以降≫
このシートに対し、PrintTitleRows/PrintTitleColumnsプロパティを使用しセル1行目A列をタイトルとすることで全てのページに印刷することができます。また、設定したタイトルを非表示にすることも可能です。
≪タイトル設定後の2ページ目以降≫
実際の動作は下の動画の通りになります。
以上がサンプル概要になります。
2.サンプルコード
◆行タイトル・列タイトルの設定
Sub Sample1() MsgBox "行・列タイトルを設定します" 'ワークシート「Sheet1」に対する処理 With Worksheets("Sheet1") '1行目を「行のタイトル」に設定 .PageSetup.PrintTitleRows = .Rows(1).Address 'A列を「列のタイトル」に設定 .PageSetup.PrintTitleColumns = .Columns("A").Address '印刷プレビュー実行 .PrintPreview End With End Sub
行タイトルと列タイトルを設定するには「PrintTitleRowsプロパティ/PrintTitleColumnsプロパティ」を使用します。
構文:オブジェクト.PrintTitleRows/PrintTitleColumns = expression
行タイトルはPrintTitleRowsプロパティ、列タイトルはPrintTitleColumnsプロパティで設定できます。
このプロパティで指定した行・列については必ず各ページに表示され印刷されるようになるので、複数ページに跨るような大きな表等の印刷には大変便利です。
サンプルではRowsプロパティとColumnsプロパティを使用して1行目を行のタイトル、A列を列のタイトルに指定しています。指定後に印刷プレビューを実行して状態を確認するようにしています。
◆行タイトル・列タイトルの非表示
Sub Sample2() MsgBox "行・列タイトルを非表示にします" With Worksheets("Sheet1") '※PrintTitleRows/PrintTitleColumnsプロパティに ' 「False」または空の文字列("")を設定すると ' 非表示にすることができます。 .PageSetup.PrintTitleRows = False .PageSetup.PrintTitleColumns = False .PrintPreview End With '参考: .PageSetup.PrintTitleRows = ("") ' .PageSetup.PrintTitleColumns = ("")でも可 End Sub
PrintTitleRowsプロパティ、PrintTitleColumnsプロパティを「False」、または「空の文字列(“”)」に設定するとタイトルを非表示とすることができます。
3.まとめ
扱いは特に難しいこともありませんので、知っておくと大変便利なPrintTitleRows/PrintTitleColumnsプロパティです。
設定のオンオフ自体も簡単に対応出来ますから、何か機会があれば使用してみても良いかと思います。私は出力したデータを印刷まで一貫して処理することも多いので良く使ってます。
以上、行・列タイトルを取得し設定する方法についてでした!今回の記事が何かの参考になれば幸いです。
Ryo