印刷プレビューをわざわざVBAでやる必要ある?って思いませんでしたか?
普通に印刷からプレビュー表示できるじゃないのって思いますよね。
そして、印刷プレビューのVBAコードも短い1行なので必要性の疑問が・・・
印刷プレビューを表示するVBAコード
印刷プレビューを表示するにはPrintPreviewメソッドを使い、ユーザーフォームに配置したコマンドボタンを押すと表示させるVBAコードはこちらです。
印刷プレビューを表示するVBAコード
Private Sub CommandButton1_Click()
ActiveSheet.PrintPreview
End Sub

とりっぷぼうる
簡単だ!できた~!と思ったら大間違いです!!!
エクセルがフリーズしますのでctrl+alt+deleteでエクセルの強制終了が必要となりますよ!
このままコマンドボタンを押してしまったら・・・

ctrl+alt+deleteでエクセルの強制終了するしか方法がありません。

こんな感じになってしまうのでやってはいけません。
どうやら、ユーザーフォームと印刷プレビューは同時に表示させてはいけないようなので、印刷プレビューが表示される前にユーザーフォームを閉じましょう。
先に閉じてからプレビューする
Private Sub CommandButton1_Click()
Unload UserForm1
ActiveSheet.PrintPreview
End Sub

とりっぷぼうる
これで問題解決できましたね。初めて印刷プレビューやった時は焦りましたよね、動かなくなったから。
印刷関連VBA
- エクセルからエクセルへ差し込み印刷
- 印刷プレビュー
- 枚数指定して印刷実行
- セル番地の値を取得して開始・終了ページ設定
- プリンター選択・設定
- 印刷範囲指定・選択中範囲印刷
- 用紙の向きを指定する
- 用紙サイズを指定する
- 印刷倍率を指定する
- 印刷倍率を自動調整に設定して1ページ内に収めて印刷
- インク・トナー節約設定
- ページ設定で上下左右の余白を指定する
- ヘッダーとフッターを指定する
- フッターの開始ページ数指定と総ページ数表示
- ヘッダー2行表示や日時表示
- 数式エラーを自動的に空白にして印刷する
- 入力漏れがあったら印刷を自動停止する