• ベストアンサー

ExcelのVBAにてページごとの枠線を引きたい

ExcelのVBAにてページごとの枠線を引きたいのですが、 Range("A13:BJ59")のように選択の仕方が分かりません。 たとえば印刷1ページ目を選択するにはどうすればいいのでしょうか? 以下のようにして罫線を引くつもりです。 Range("A13:BJ59").BorderAround LineStyle:=xlContinuous, Weight:=xlThin, ColorIndex:=xlAutomatic

質問者が選んだベストアンサー

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.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になっていなかったとかじゃないですかね?

kkk311
質問者

お礼

ありがとうございます! 参考になりました!

その他の回答 (1)

  • hornest
  • ベストアンサー率16% (2/12)
回答No.1

枠線の意味が解りませんが、印刷範囲の事でしょうか? ActiveSheet.PageSetup.PrintArea = Range("A13:BJ59")

kkk311
質問者

お礼

ありがとうございます。 枠線というのは罫線のことです。 印刷範囲は、教えていただいたのを逆にして取得することができました。 印刷範囲 = ActiveSheet.PageSetup.PrintArea ですが、印刷範囲の設定した保存ファイルを開き、そのままマクロを実行すると、上記の方法では""と範囲ではなく空白が返ってきてしまいます。 開いて、印刷範囲を動かして、マクロを実行すると取得できていました。 なぜ選択範囲が取得できないのでしょうか?

関連するQ&A