VBAで印刷プレビューするとフリーズして操作不能になる時の対処法

エクセル検索
HOMEUserForm印刷画面ファイル図形
日付・時刻データセル関数VBA関数

エクセルで印刷する前に確認の為に印刷プレビューを実行することがあると思いますが、フリーズして操作不能になってしまった経験はありませんか?

ユーザーフォームに間違ったVBAコードを書いてしまうと起きてしまうエラーなので、トラブルにならないようにする対処法をご紹介します。

印刷プレビューを表示するVBA

VBAコードを使って印刷プレビューを表示するには、PrintPreviewだけなのでとても簡単です。

ワークシート上のコマンドボタン

下記コードをワークシート上に配置したコマンドボタンにVBAコードを記述するだけで、印刷プレビューができます。

印刷プレビューVBA

Sub 印刷プレビュー()
Activesheet.PrintPreview
End Sub

解説
  1. 「印刷プレビュー」というプログラム名を実行する
  2. 表示されているシートの印刷プレビューを表示する
  3. マクロ記録終了

このように書いたVBAコードで表示しているシートの印刷プレビューを表示できます。

ユーザーフォーム上のコマンドボタン

それでは次に、このVBAコードをユーザーフォームに配置したコマンドボタンに記述すると、通常はマクロ名の宣言部分 「Sub 印刷プレビュー()」を 「 Private Sub CommandButton1_Click() 」に代えるだけなのですが・・・

VBAコード

Private Sub CommandButton1_Click()
Activesheet.PrintPreview
End Sub

解説
  1. コマンドボタン1がクリックされたら
  2. 表示されているシートの印刷プレビューを表示する
  3. マクロ記録終了
波乗りアヒル

このままだとフリーズしますから絶対ダメ

印刷プレビューフリーズ
このようになりフリーズして操作不能に陥ります

やってしまうと、下記のような印刷プレビュー画面とユーザーフォームが同時表示されて操作不能になってしまい、エクセルを強制終了するしかありません。

こうなってしまったら強制終了するしかないので、パソコンのキーボード【ctrl+alt+delete】ですよね・・・

保存もされずに作業した内容が最悪消えてしまう事も。

エラー回避するVBAコード

先ほど書いたVBAコードでは、ユーザーフォームが表示されたままにもかかわらず、印刷プレビューまで表示させてしまった為にどちらの操作もできなくなったことが原因です。

波乗りアヒル

解決策は至ってシンプルで、印刷プレビューを表示する前にユーザーフォームを消してしまえばいいのです。

そこで、印刷プレビューを表示させる直前にユーザーフォームを閉じるようにVBAコードを追加して書くことで解決です。

VBAコード

Private Sub CommandButton1_Click()
Unload UserForm1
Activesheet.PrintPreview
End Sub

解説
  1. コマンドボタン1がクリックされたら
  2. ユーザーフォーム1を閉じる
  3. 表示されているシートの印刷プレビューを表示する
  4. マクロ記録終了
波乗りアヒル

たったこれだけのVBAコードを入れ忘れるだけでフリーズしてしまうので、マクロを使う時はエラー回避するためのVBAコードはとても重要ですよ。

関連記事

どこかにビューーン
ちょっとの工夫で往復無料の時代が来た!!

新着ページ

よく見られているページ

大容量無料ファイル転送サービス【ACデータ】 無料イラスト【イラストAC】

紅葉スポット

2024年5月11日からマイルと楽天ポイントとの相互交換提携開始!

交換レート0.5:1なので半分になってしまいますが、使い方次第で実質3倍の価値まで引き上げられる方法です。