Worksheet.PageSetup.FitToPagesTall/Wideの設定はリアルタイムで反映されない
[Worksheet].PageSetup.FitToPagesTall/Wideの設定はリアルタイムで反映されない
知ってました?
私はこのことに気づかなかったせいで、お盆の期間だというのにドハマりして残業してしまいました。
状況
次のようなシートがあるとする。
四隅のち~んw
を一枚のシートに収めたいのだが、ご覧のようにでたらめなところに改ページが入ってしまっている。
そこで、次のコードで一枚のシートに収めようと試みた。
リスト1 標準モジュール
Option Explicit Private Sub testFitToOnePage() Dim Sh As Worksheet Set Sh = ActiveSheet With Sh.PageSetup .Zoom = False .FitToPagesTall = 1 .FitToPagesWide = 1 End With End Sub
しかし、こいつを何度実行しても、シートの見た目は
このとおり、微動だにしない。
だから、てっきりこのやり方ではだめなのだと思っていた。
しかし、[ファイル]メニューから印刷プレビューをのぞきに行くと、
なんと、ちゃんと1ページに収まっているではないか!
要するに、処理の結果が編集画面に反映されていないだけだったのだ。
くそー。何だったんだよ!
おわりに
[Worksheet].PageSetup.FitToPagesTall
及び同FitToPagesWide
プロパティ設定をしても、すぐに見た目には反映されず、プレビューなどを表示させた後でシートに戻ると反映されています。
ちなみに、リスト1を
Private Sub testFitToOnePage() Dim Sh As Worksheet Set Sh = ActiveSheet With Sh.PageSetup .Zoom = False .FitToPagesTall = 3 .FitToPagesWide = 4 End With Call Sh.PrintPreview End Sub
とかにして実行しても、
こうなるだけです。決して3×4に均等に分割してくれるわけではありません。
一応、「次のページ数に合わせて印刷」のところは「4×3」とかになっていますが。
参考
改ページまわりについてはコチラもどうぞ。