読者です 読者をやめる 読者になる 読者になる

hiroshi akutsuの日記

主にプログラミング関係のこと

vba【大量の複数の印刷範囲の設定の仕方】

忘れやすいのでメモ。

vbaのPageSetup.PrintAreaプロパティはセル範囲をA1形式の文字列で設定し、複数の範囲にしたい場合はカンマで区切れば複数範囲の印刷設定が可能である。

こんな風に...

ActiveSheet.PageSetup.PrintArea = "A1:G5,A8:G13"

しかし、なぜそんな制限(というか仕様)にしてしまったのかよくわからないが、残念なことに設定値の文字列が255文字を超えたらエラーになる。

どうすべきかと言えば、一旦印刷範囲をUnionでrangeオブジェクトにして、Nameプロパティでセルに名前を付けて、PrintAreaプロパティに付けた名前を渡せばいい。

Dim ra As Range
Set ra = Range("A1:G5")
Set ra = Union(ra,"A8:G13")

'''ループでどんどんUnionしていくイメージ

ra.Name = "印刷範囲"
ActiveSheet.PageSetup.PrintArea = "印刷範囲"

excel 2013,2010では動くのを確認できたが、それ以前のバージョンは不明。