Excelで罫線を使って表を作る場合は多いです。
一つのシートに複数の表を縦に作っていく場合、表の途中で改ページされると困ることがあります。
そこであらかじめ、それぞれの表の下端で改ページしておく、という方法が考えられます。
これを自動的に実行するマクロを作りました。
「表の下端」の定義ですが、次のように考えます。
「左と下に罫線がなく、その上のセルの左と下に罫線があるセル」
これをシートの上からチェックして該当するセルが見つかったら改ページを入れます。
Sub 罫線の下端で改ページ()
Const c = 1 'チェックする列
For r = 2 To 1000
left0 = Cells(r - 1, c).Borders(7).LineStyle
bottom0 = Cells(r - 1, c).Borders(9).LineStyle
left1 = Cells(r, c).Borders(7).LineStyle
bottom1 = Cells(r, c).Borders(9).LineStyle
If left0 <> xlNone And bottom0 <> xlNone And left1 = xlNone And bottom1 = xlNone Then
Cells(r, c).PageBreak = xlPageBreakManual
Else
Cells(r, c).PageBreak = xlNone
End If
Next r
End Sub
Const c = 1 'チェックする列
For r = 2 To 1000
left0 = Cells(r - 1, c).Borders(7).LineStyle
bottom0 = Cells(r - 1, c).Borders(9).LineStyle
left1 = Cells(r, c).Borders(7).LineStyle
bottom1 = Cells(r, c).Borders(9).LineStyle
If left0 <> xlNone And bottom0 <> xlNone And left1 = xlNone And bottom1 = xlNone Then
Cells(r, c).PageBreak = xlPageBreakManual
Else
Cells(r, c).PageBreak = xlNone
End If
Next r
End Sub
繰り返し条件は単純化して1000行目までとしています。
まず、該当セルの上のセルの左と下の罫線を調べます。Bordersの7が左、9が下です(ちなみに8が上、10が右です)。LineStyleがxlNoneだと罫線なしです。
同様に該当セルの左と下の罫線を調べます。
これらが先程の定義に合うかチェックし、合えば改ページを入れます。PageBreakにxlPageBreakManualをセットします。
コメント