- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ExcelVBA ファイルクローズ時にエラーとなる)
ExcelVBA ファイルクローズ時にエラーとなる
このQ&Aのポイント
- ExcelVBAでファイルをクローズする際にエラーが発生する場合の対処方法を教えてください。
- ExcelVBAのコードでブックを閉じる動作をしている際に、2003や2007バージョンのExcelで複数のブックが開いている場合に「問題が発生したため・・・Excelを終了します」というエラーメッセージが表示される場合の解決方法を教えてください。
- ExcelVBAのコマンドボタンをクリックすると、ブックを閉じる動作をするコードが実行されますが、2003や2007バージョンのExcelでは複数のブックが開いている場合にエラーが発生してしまいます。このエラーを回避する方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
お礼
時間の問題もあり、結局 Application.Quit で逃げました。 いろいろご回答をありがとうございました。
補足
こんにちは、ありがとうございます。 すみません、回答していないことがありました。(今さらですが) エラーが出ているのはUserformのCommandButtonです。 発生しているエラーはSheet1の例と同じものです。 あと、もう一度確認ですが、Sheet1の例で、初めのエラー発生と回避策1のエラー回避から UserformがModalだと(Sheetのイベントを抜けられなくて)エラーとなり、 Modelessだと(Sheetのイベントを抜けられるので)エラーとならない。 よって、UserformをModelessとするのが(この場合のSheetイベントを抜ける)回避策である、 と言えないでしょうか? Closeでエラーとなるのは、SheetイベントだけでなくUserform等の他のイベントも含めた 閉じるための条件があり、ModelessにすればすべてOKではない、ということはわかります。 おそらく、現在の状況(Modelessにしてもエラーが起こる)は、そのためでしょう。 当方のシステムは、UserformをModelessにしても問題がないので、回避先1のほうを色々試し、 実は申し訳ありませんが、回避策2の方はあまり見てませんでした。 Application.OnTime Now(), "ProcF" (・・・これ、知りませんでした。) を使って色々やってみましたが、同じように2007,2003でエラーとなりました。 当方のシステム、結構大きいので、書き出すと限がなくなりそうなので、今まで書きませんでしたが、 ポイントを絞ってもう少し説明を加えます。 システムの概要は、Excelブック上で行う業務処理で、ユーザの操作は全てUserformで行ってます。 各シートで右クリックすると操作メニューが表示され、そこからメニューを選択して業務操作を行い ます。操作メニューはSheetモジュールから、○○○.Show vbModeless で起動します。 操作メニューに、共通のボタンを用意し、そのボタンをクリックすると「表移動」というUserformを 次の記述で起動します。 unload (操作メニューのUserform) 表移動.Show vbModeless この表移動というのは、Excelのシートを移動するためのもので、シートに対応するボタンがあり、 それをクリックすると、そのシートを表示します。 移動したシートでも、右クリックで操作メニューを起動しその共通ボタンでまたこの表移動を起動し 他のシートに移動できる、という具合に、何回か繰り返し様々なシートを参照する場合があります。 この表移動のUserformに[システム終了]のボタン(これがCommandButton2)があり、 これをクリックすると、ブッケを保存し、1つのブックならExcelを終了、複数ブックなら、現在の ブックを終了としたいのです。・・・これが当初記載したプロシジャーで、ここでエラーが 起きます。 よろしければこの説明で、ご指摘いただく点がありましたら、ご提示ください。 最悪は、2010ではエラーとならないので、またブックが1つの場合の、Application.Quitでは エラーとならないので、ブックが複数でExcelバージョンが2010未満の場合のみ、ユーザにブックを 1つにしていただくメッセージを出すことにより、対応しようと考えてます。 (不本意ですが…。)