- ベストアンサー
エクセルで改ページ部分に自動で線を
エクセルで帳票をプリントする際、データの量によっては自動改ページされ複数枚になります。 その際、改ページされる最後のところに線を自動で引くことは可能でしょうか? 次ページの先頭には線は不要ですが、3ページになる場合は次ページの最後に線が必要です。 フッター部分の表記とデータ部分を明確に区別するためです。よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 ●一頁しかない場合で 1.行数が一頁に満たない時 2.行数が一頁にぴったりの時 ●複数頁ある場合で 1.最後の頁の行数が頁に満たない時 2.最後の頁の行数が頁にぴったりの時 上記のことも考慮し、それぞれの頁のフッターの直ぐ上の行に下線を引くのですよね。 新しいシートで下記のコードをお試あれ。 使用列は、A-Dとする。 --------------------------------------------- Sub Test() Dim BreakSu As Integer Dim BreakSu2 As Integer Dim B As Integer Dim Rw As Long Dim LastRow As Long LastRow = Range("A65536").End(xlUp).Row BreakSu = ActiveSheet.HPageBreaks.Count Range(Cells(LastRow + 1, "A"), Cells(LastRow + 100, "A")) = "ABC" BreakSu2 = ActiveSheet.HPageBreaks.Count For B = 1 To BreakSu + 1 Rw = ActiveSheet.HPageBreaks(B).Location.Row - 1 With Range(Cells(Rw, "A"), Cells(Rw, "D")).Borders(xlEdgeBottom) .LineStyle = xlContinuous End With Next B Range(Cells(LastRow + 1, "A"), Cells(LastRow + 100, "A")) = "" ActiveSheet.PrintPreview End Sub ------------------------------------------------ プリントが済んだ後の下線を消す方法は考えてみてください。 以上です。
その他の回答 (5)
- KenKen_SP
- ベストアンサー率62% (785/1258)
>だから自動改ページさせているので、改ページ場所は不定なんですよ~。 #2です。力技ですが、、、 VBAマクロでやるなら、HPageBreaks コレクションを調べることで水平改ページの位置がわかります。下記サンプルは水平改ページの位置(行番号)をイミディエイトに表示するだけですが、実際にはセル罫線を引く処理を挟んでやれば良いかと思います。 例えば、 Intersect(Columns("A:E"), Rows(Pb.Location.Row)) _ .Borders(xlEdgeTop).Weight = xlThin こんな感じでしょうか。 しかし、『どこまで自動的なのか』という問題があります。 ご紹介した方法は、データ修正の度に罫線の引きなおし作業が発生します。この点についてもコーディングする必要がありますね。ご参考までに。 Sub Sample() Dim Pb As HPageBreak For Each Pb In ActiveSheet.HPageBreaks Debug.Print Pb.Location.Row Next Pb End Sub
お礼
出来ました! ありがとうございます。 ただ、これだと改ページしないと、つまり一枚だけだと罫線がでませんよね。当たり前だけど。 一枚の場合でも自動的に改ページされるであろうあたりで出す方法はないですか?
- taocat
- ベストアンサー率61% (191/310)
こんにちは。 汎用性を考えるなら、 HPageBreakオブジェクトのLocationプロパティを使ってみたらどうでしょう。 HPageBreaks (HPageBreakオブジェクトのコレクション) ActiveSheet.HPageBreaks.Count (改ページ総数) ActiveSheet.HPageBreaks(1).Location.Row (一番目の改ページの行) Location.Rowで改ページの行が分りますので、その上の行に線を引けばいいですよね。 以上です。
お礼
HPageBreakオブジェクトのLocationプロパティとは初めて聞いた呪文です。 ありがとうございました。
- takkuni
- ベストアンサー率24% (166/676)
タイトル(項目)を各頁に印刷するようにすれば可能かと思います。ファイル ~ ページ設定でシートタブから行列どちらでも指定できます。
補足
行や列の印刷タイトルのことですか? これだとヘッダーとの境のところにはもってこれますが、フッダーでは無理ではないでしょうか?
- KenKen_SP
- ベストアンサー率62% (785/1258)
条件付書式を利用してみてはどうですか? 例えば、1ページ60行で改ページするように印刷設定されているのであれば、 [数式が] =MOD(ROW(),60)=0 で罫線書式から下線を設定します。
補足
ありがとうございます。 1ページの行数が決まっていればそれでいいんですが、データによってはセル内で折り返し表示させるため、行の高さが変わるんです。 だから自動改ページさせているので、改ページ場所は不定なんですよ~。
- moooon
- ベストアンサー率26% (26/98)
難しい方法は知りませんが、フッターを使っているんであればそれを利用したらいかがでしょう。 フッターの1行目をスペースで連打し、フォントの設定で架線を選びます。 これで下線だけが表示され、丁度データとフッターの境になるのではないですか?
補足
その方法をためしました。 既に文字数がたくさん入っているためか、エラーになってしまいます。 空白のページでためしたら、短い線は引けましたが、いくらスペースを打っても長くなりません。
お礼
すばらしい! 後ろに100行追加しちゃうわけですね、なるほどぉ・・・。 ありがとうございました。