Worksheet.PageSetup.FitToPagesTall/Wideの設定はリアルタイムで反映されない


[Worksheet].PageSetup.FitToPagesTall/Wideの設定はリアルタイムで反映されない

知ってました?

私はこのことに気づかなかったせいで、お盆の期間だというのにドハマりして残業してしまいました。

状況

次のようなシートがあるとする。

f:id:akashi_keirin:20190815075515j:plain

四隅のち~ん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

しかし、こいつを何度実行しても、シートの見た目は

f:id:akashi_keirin:20190815075528g:plain

このとおり、微動だにしない。

だから、てっきりこのやり方ではだめなのだと思っていた。

しかし、[ファイル]メニューから印刷プレビューをのぞきに行くと、

f:id:akashi_keirin:20190815075518j:plain

なんと、ちゃんと1ページに収まっているではないか!

要するに、処理の結果が編集画面に反映されていないだけだったのだ。

くそー。何だったんだよ!

おわりに

[Worksheet].PageSetup.FitToPagesTall及び同FitToPagesWideプロパティ設定をしても、すぐに見た目には反映されず、プレビューなどを表示させた後でシートに戻ると反映されています。

f:id:akashi_keirin:20190815080434g:plain

ちなみに、リスト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

とかにして実行しても、

f:id:akashi_keirin:20190815075522j:plain

こうなるだけです。決して3×4に均等に分割してくれるわけではありません。

一応、「次のページ数に合わせて印刷」のところは「4×3」とかになっていますが。

参考

改ページまわりについてはコチラもどうぞ。

akashi-keirin.hatenablog.com