Excel VBAでPrint Areaを設定するときに、指定した範囲がズレてしまう問題が発生することがあります。この記事では、Excel 2019でPrint Areaが2行分少なく設定されてしまう原因と、その解決方法について解説します。
問題の概要
質問者は、Excel VBAで次のようにPrint Areaを設定しましたが、指定した範囲がずれてしまうという問題に直面しています。
具体的には、以下のコードを使用してPrint Areaを設定しているにもかかわらず、2行分少なく設定されてしまうという現象です。
ActiveSheet.PageSetup.PrintArea = "A1:K16"
Excel 2019とExcel 2010の違い
この問題は、Excel 2019に特有のものです。Excel 2010では問題なくPrint Areaが設定できていたのに、Excel 2019ではズレが発生するという違いがあります。これには、Excelのバージョンごとの設定方法やバグが関係している可能性があります。
原因1: ページ設定の影響
Excelでは、ページ設定によって印刷範囲が影響を受けることがあります。ページ設定で設定された「余白」や「印刷サイズ」が原因で、Print Areaがズレる場合があります。特に、ページの上下余白や印刷範囲を変更した場合、設定した範囲が正しく反映されないことがあります。
対策としては、まずページ設定を見直し、余白や用紙サイズが正しく設定されているか確認しましょう。
原因2: 行の高さや列の幅の問題
行の高さや列の幅が異常に設定されている場合も、Print Areaがズレる原因となることがあります。特に、セル内に画像やオブジェクトが含まれている場合、そのサイズに合わせて行や列のサイズが自動的に調整され、Print Areaがずれることがあります。
これを解決するためには、行の高さや列の幅を手動で調整し、Print Areaの設定を再度行ってみてください。
原因3: 印刷の設定とVBAの連携
VBAコードでPrint Areaを設定する際、印刷範囲を正確に指定しても、VBAのコード内で別の印刷設定が上書きされている可能性もあります。例えば、PageSetupを変更した後、他の設定が影響を与えることがあります。
VBAでPrint Areaを設定する際は、PageSetupの全ての設定を明示的に指定することをお勧めします。以下のように、余白や印刷サイズも合わせて設定することで、問題を防ぐことができます。
With ActiveSheet.PageSetup
.PrintArea = "A1:K16"
.LeftMargin = Application.InchesToPoints(0.7)
.RightMargin = Application.InchesToPoints(0.7)
.TopMargin = Application.InchesToPoints(0.7)
.BottomMargin = Application.InchesToPoints(0.7)
.PaperSize = xlPaperA4
End With
まとめと対策方法
Excel 2019でPrint Areaがズレてしまう問題は、ページ設定や行・列のサイズ、VBAの印刷設定などが原因で発生することがあります。以下の対策を行うことで、問題を解決できます。
- ページ設定を確認し、余白や用紙サイズが正しく設定されているか確認する。
- 行の高さや列の幅を手動で調整する。
- VBAコードで印刷設定を明示的に指定する。
これらの対策を行うことで、Print Areaのズレを防ぎ、正しい印刷範囲を設定できるようになります。


コメント