エクセルで印刷する前に確認の為に印刷プレビューを実行することがあると思いますが、フリーズして操作不能になってしまった経験はありませんか?
ユーザーフォームに間違ったVBAコードを書いてしまうと起きてしまうエラーなので、トラブルにならないようにする対処法をご紹介します。
印刷プレビューを表示するVBA
VBAコードを使って印刷プレビューを表示するには、PrintPreviewだけなのでとても簡単です。
ワークシート上のコマンドボタン
下記コードをワークシート上に配置したコマンドボタンにVBAコードを記述するだけで、印刷プレビューができます。
Sub 印刷プレビュー()
Activesheet.PrintPreview
End Sub
- 「印刷プレビュー」というプログラム名を実行する
- 表示されているシートの印刷プレビューを表示する
- マクロ記録終了
このように書いたVBAコードで表示しているシートの印刷プレビューを表示できます。
ユーザーフォーム上のコマンドボタン
それでは次に、このVBAコードをユーザーフォームに配置したコマンドボタンに記述すると、通常はマクロ名の宣言部分 「Sub 印刷プレビュー()」を 「 Private Sub CommandButton1_Click() 」に代えるだけなのですが・・・
Private Sub CommandButton1_Click()
Activesheet.PrintPreview
End Sub
- コマンドボタン1がクリックされたら
- 表示されているシートの印刷プレビューを表示する
- マクロ記録終了
波乗りアヒルこのままだとフリーズしますから絶対ダメ!


やってしまうと、下記のような印刷プレビュー画面とユーザーフォームが同時表示されて操作不能になってしまい、エクセルを強制終了するしかありません。
こうなってしまったら強制終了するしかないので、パソコンのキーボード【ctrl+alt+delete】ですよね・・・
保存もされずに作業した内容が最悪消えてしまう事も。
エラー回避するVBAコード
先ほど書いたVBAコードでは、ユーザーフォームが表示されたままにもかかわらず、印刷プレビューまで表示させてしまった為にどちらの操作もできなくなったことが原因です。



解決策は至ってシンプルで、印刷プレビューを表示する前にユーザーフォームを消してしまえばいいのです。
そこで、印刷プレビューを表示させる直前にユーザーフォームを閉じるようにVBAコードを追加して書くことで解決です。
Private Sub CommandButton1_Click()
Unload UserForm1
Activesheet.PrintPreview
End Sub
- コマンドボタン1がクリックされたら
- ユーザーフォーム1を閉じる
- 表示されているシートの印刷プレビューを表示する
- マクロ記録終了



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


エクセルのセル値を取得して印刷ページ数・枚数を自動変更する方法
ページを印刷する時に、印刷ページや枚数を選ぶ作業って面倒だと思いませんか? エクセルで印刷するに毎回【ファイル】➡【印刷】を選ぶところから始まり、ページ… -
印刷


エクセルVBAでテキストボックスに入力した数字で印刷枚数を指定する
ユーザーフォームに配置したテキストボックスに入力した数字に応じて印刷枚数が指定できたら便利だと思いませんか? ワークシート上で【ファイル】➡【印刷】でペ… -
印刷


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


めんどうな印刷確認を省略してVBAで印刷範囲を指定して印刷する方法
表などを印刷する時に、印刷範囲が決まっていることが多いのに、毎回印刷プレビューで確認したりプリンターの設定確認をするのは面倒だと思いませんか? そこで予め印刷… -
印刷


エクセルVBAで未入力データがあるかどうか確認してから印刷する方法
エクセルで表や請求書などを印刷する時に、必要なデータが未入力のままで気づかずに印刷してしまったことありませんか? 紙の無駄になるので印刷する前に自動的に請求書…
紅葉スポット
記事が見つかりませんでした。






