マクロで改ページ単位でページ下部に罫線を引く

ページ作成日 :

現在表示しているページは選択中の表示言語には対応しておりません。

概要

印刷をする際に用紙の枠組みとしてヘッダーと四方に罫線を引く形式を用いることが多いと思います。しかし用紙が一枚であるならば罫線を手動で引くだけでいいのですが、複数ページになった場合、各ページの下側に罫線が表示されなくなってしまいます。また手動で引きなおす対応もありますが、途中で行を追加したり削除したりすると全てのページで罫線を引きなおさなければなりません。

ここではマクロを使用してすべてのページの下部に罫線を自動で引く方法について説明します。

マクロで改ページ単位でページ下部に罫線を引く

動作確認バージョン

対応 Excel バージョン

  • 2010
  • 2007
  • 2003
  • (他のバージョンでも動作するかもしれませんが未確認)

確認 Excel バージョン

  • 2010
  • 2007
  • 2003

内容

1ページの印刷

印刷するページ数が1ページである場合、行の一番下に罫線を引いても特に問題なく印刷することができます。

複数ページ印刷時の最下行

しかしページ数が複数になった場合、行の一番下だけに罫線を引いても各ページの最下行には罫線は表示されません。各ページに罫線を表示させるには手動で改ページの箇所に罫線を設定する必要があります。

しかし、途中に行を追加したり削除したりすると改ページの行や罫線の行がすれてしまうため、再度引きなおしになってしまうので面倒です。

ですのでここではマクロを使用して一括で改ページの行に罫線を引く方法を使いたいと思います。

ボタンの配置

マクロを組み込んで実行すればいいのでどのような起動方法でもいいのですが、サンプルでは別シートにボタンを配置してボタンを押したときに改ページに罫線を引くようにしています。

すでにマクロを組み込んだものを配布する場合はそのままファイルを渡せばいいですが、自分でマクロを組む場合はマクロを組めるようにExcelの設定を行います。その方法については「開発タブを表示してフォームの配置や VBA によるプログラム開発を有効にする」を参照してください。

マクロの登録

ボタンを配置するとマクロの登録ダイアログが表示されるので「新規作成」ボタンを押してクリックイベントを実行できるように作成しましょう。

マクロや Visual Basic については詳しい説明は行いませんので、別途調べてください。

Visual Basic エディタが開いたら以下のコードを追加します。この関数を呼ぶことによって指定したシートの改ページの行に罫線を引くことができます。

関数の説明についてはコメントを入れていますのでそちらを確認ください。

'【概要】
' 改ページプレビューに合わせて、ページの下に黒の羅線を引きます。
'
'【引数】
' targetSheet    : 改ページラインの描画対象シート
'  lineStyle      : 罫線のスタイル。XlLineStyle 列挙型から指定。
'  lineWeight     : 罫線の太さ。XlBorderWeight 列挙型から指定。
'  lineColorIndex : 罫線の色。XlColorIndex 列挙型から指定、またはカラー パレットのインデックス値を指定。
'
'【備考】
'  一度罫線を設定すると戻せないので注意。
Private Sub SetHPageBreakLines(targetSheet As Worksheet, _
                               Optional lineStyle As XlLineStyle = xlContinuous, _
                               Optional lineWeight As XlBorderWeight = xlThin, _
                               Optional lineColorIndex As XlColorIndex = xlAutomatic)

  ' 列の最大位置取得
  Dim maxColumn As Integer
  maxColumn = targetSheet.UsedRange.Columns.Count
    
  ' 各ページ描画
  For Each hpg In targetSheet.HPageBreaks
    Dim row As Integer
    Dim targetCell As Range
    row = hpg.Location.row - 1
    Set targetCell = targetSheet.Range(targetSheet.Cells(row, 1), targetSheet.Cells(row, maxColumn))
    
    ' 罫線のプロパティを設定する
    With targetCell.Borders(xlEdgeBottom)
      .lineStyle = lineStyle
      .Weight = lineWeight
      .ColorIndex = lineColorIndex
    End With
  Next
    
End Sub

ボタンのクリック処理は以下のようにします。作成した「SetHPageBreakLines」関数にシートを指定すればそのシートに対して罫線を描画します。罫線のスタイルも指定したい場合は、残りの引数で指定することができます。

サンプルなのでシート名をマクロで直接指定していますが、セルにシート名を記述できるようにつくってそのセルを参照できるようにした方が汎用的だと思います。

'【概要】
'  ボタンクリックイベント
Sub ボタン1_Click()
  ' 対象シート
  Dim syoriSheet As Worksheet
  Set syoriSheet = Worksheets("ドキュメント")

  ' 罫線を設定
  Call SetHPageBreakLines(syoriSheet)

  ' 下は線のスタイル指定
  'Call SetHPageBreakLines(syoriSheet, xlContinuous, xlThin, xlAutomatic)

  MsgBox syoriSheet.HPageBreaks.Count & "ページ分の線の設定が完了しました。"
End Sub

各ページ毎の罫線表示

マクロを実行すると各ページの最下行に罫線が設定されることが分かります。印刷プレビューでも確認することができます。

注意点としては一度マクロを実行すると設定した罫線は戻せないので印刷するときだけマクロを実行して印刷するのがいいと思います。