- ベストアンサー
ExcelのVBAにてページごとの枠線を引きたい
ExcelのVBAにてページごとの枠線を引きたいのですが、 Range("A13:BJ59")のように選択の仕方が分かりません。 たとえば印刷1ページ目を選択するにはどうすればいいのでしょうか? 以下のようにして罫線を引くつもりです。 Range("A13:BJ59").BorderAround LineStyle:=xlContinuous, Weight:=xlThin, ColorIndex:=xlAutomatic
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
『ExcelのVBAにてページごとの枠線を引きたい』場合は こんな感じになります。 Sub try_1() Dim r As Range Dim x As Object With ActiveSheet Set r = .UsedRange '【注意】使用領域の罫線をクリア。拙い場合は除外してください。 r.Borders.LineStyle = xlNone '最終セル選択し改ページプレヴュー。PageBreaks取得のため。 r(r.Count).Select ActiveWindow.View = xlPageBreakPreview '印刷エリアが設定されている場合は範囲再設定 If .PageSetup.PrintArea <> "" Then Set r = .Range(.PageSetup.PrintArea) End If r.BorderAround xlContinuous '水平改ページ位置をLoopして罫線設定 For Each x In .HPageBreaks Intersect(r, x.Location.Offset(-1).Resize(2).EntireRow) _ .Borders(xlInsideHorizontal).LineStyle = xlContinuous Next '垂直改ページ位置をLoopして罫線設定 For Each x In .VPageBreaks Intersect(r, x.Location.Offset(, -1).Resize(, 2).EntireColumn) _ .Borders(xlInsideVertical).LineStyle = xlContinuous Next End With 'ノーマルビューに戻す ActiveWindow.View = xlNormalView Set r = Nothing End Sub もし、セル背景色を全て『白』にしても構わないなら、 白色にしてセル枠線が印刷されないようにした上で、ページ設定の[枠線]オプションをOnにすれば良いです。 手動で一度設定してしまえば済むのでマクロ不要ですが、一応、 Sub try_2() With ActiveSheet .UsedRange.Interior.Color = vbWhite .PageSetup.PrintGridlines = True End With End Sub ついでに >印刷範囲 = ActiveSheet.PageSetup.PrintArea >印刷範囲の設定した保存ファイルを開き、そのままマクロを実行すると、 >上記の方法では""と範囲ではなく空白が返ってきてしまいます。 推測ですが、印刷範囲を設定したシートがActiveになっていなかったとかじゃないですかね?
その他の回答 (1)
- hornest
- ベストアンサー率16% (2/12)
枠線の意味が解りませんが、印刷範囲の事でしょうか? ActiveSheet.PageSetup.PrintArea = Range("A13:BJ59")
お礼
ありがとうございます。 枠線というのは罫線のことです。 印刷範囲は、教えていただいたのを逆にして取得することができました。 印刷範囲 = ActiveSheet.PageSetup.PrintArea ですが、印刷範囲の設定した保存ファイルを開き、そのままマクロを実行すると、上記の方法では""と範囲ではなく空白が返ってきてしまいます。 開いて、印刷範囲を動かして、マクロを実行すると取得できていました。 なぜ選択範囲が取得できないのでしょうか?
お礼
ありがとうございます! 参考になりました!