VBAでExcelメニューの閉じるコマンドの処理方法
- Windows98、Excel2000上でVBAを使用し、Excelメニューの閉じるコマンドや右上の×ボタンが押されたときに処理をしたい場合、Workbook_BeforeCloseイベントを使用すると良いです。
- ただし、この方法ではユーザーフォームを閉じるときに使っているApplication.Quitが実行されるとWorkbook_BeforeCloseイベントに飛んでしまい、無限ループが発生してしまいます。
- そのため、無限ループを回避するために別の方法を使用する必要があります。具体的な方法については、質問の内容によって異なるので、具体的な質問内容を詳しく記載してください。
- ベストアンサー
VBAでExcelメニューの”閉じる”コマンドが押されたときに処理がしたいのですが
Windows98、Excel2000上でVBAをいじっています。ユーザーフォームをメニュー画面にしてExcelのシートを切り替えるプログラムを作っています。 Excelメニューの"閉じる"コマンド、或いは右上の"×"ボタンを押されたときに"本当に終了しますか?"と表示させたいですがどのようにすればよろしいですか。 Workbook_BeforeClose(Cancel As Boolean)の中でやると良いといろんなサイトにありましたが、これをやると、ユーザーフォームを閉じるときに使っているApplication.Quitで無限ループしてしまいます。 というのはApplication.Quitが実行されるとWorkbook_BeforeClose(Cancel As Boolean)に飛んでしまうらしいのです。 どんな些細なことでもけっこうですので 宜しくお願い致します。
- leftovers
- お礼率70% (42/60)
- オフィス系ソフト
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ユーザーフォームを閉じるのは 一般的には Unload フォーム名 だと思います。
関連するQ&A
- VBAの「This Workbook」について
VBAの「This Workbook」にコードを書くことについて教えて下さい。 ここにコードを書きと、例えばどんな便利な機能があるのでしょうか? よろしくお願いします。 私は下記の意味はだいだいわかります。 Private Sub Workbook_BeforeClose(Cancel As Boolean) Private Sub Workbook_Open()
- ベストアンサー
- Visual Basic
- フォームのボタンからのみexcelを終了したい
おねがいします。 都合上、フォームのボタンからだけexcelを終了したのです。 Private Sub CommandButton1_Click() Application.DisplayAlerts=False Application.Quit End Sub それに伴い、 右上のexcelのxボタン、シートのxボタンを無効化または非表示にしたいです。 Private Sub Workbook_BeforeClose(Cancel As Boolean) If CloseMode = 0 Then Cancel = 1 End If End Sub これで、エクセルxボタンは無効になりましたが、 フォームからの終了も出来なくなってしまいました。 フォームからのみ終了する方法を教えてください。
- 締切済み
- Visual Basic
- エクセルVBAにて保存するとき
Private Sub Workbook_BeforeClose(Cancel As Boolean) If MsgBox("エクセルを終了してもよろしいですか?", vbYesNo) = vbNo Then Cancel = True Exit Sub End If Application.DisplayAlerts = False Application.Quit End Sub Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) MsgBox "そのボタンでは保存できません。" & vbCrLf & _ "雛形は残しておきましょう" & vbCrLf & _ "" & vbCrLf & _ "ツールバーの「マクロなし出力」から保存できます。" Cancel = True End Sub という二つのマクロをThisworkbookにいれてあるんですが、 この二つを有効(今は2つ目を'でコメント状態にしてあるので保存可)にすると保存できなくて困っています。 二つを有効にした時はどのようにほぞんすればいいですか?
- 締切済み
- Visual Basic
- ExcelのVBAについてです。
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) UserForm1.Show End Sub というコードで、シート上で右クリックしたら、ユーザーフォームを表示するようにしたんですが、ユーザーフォームを閉じると右クリックメニューが出てきます。これを出なくするにはどのようにしたらいいのでしょうか。教えてください。よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- アプリケーションも閉じたいのですが
ブック(ファイル)だけじゃなくて アプリケーションも閉じたいのですが Private Sub Workbook_BeforeClose(Cancel As Boolean) ActiveWorkbook.Close SaveChanges:=True End Sub としたのですが、実際閉じるのはブックだけでアプリケーションは開いたままです。 「ウインドウを閉じる」を押して、ブックだけが閉じるのはわかるのですが 図のようにアプリケーション閉じるボタンを押してもウインドウ(ブック)しか閉じません。 Private Sub Workbook_BeforeClose(Cancel As Boolean) ActiveWorkbook.Close SaveChanges:=True Application.Quit End Sub にしても結果は同じです。 しかし、Workbook_BeforeCloseイベントがないファイルなら、 アプリケーション閉じるボタンを押しても全て終了できます。 Workbook_BeforeCloseイベントを使っても アプリケーションも閉じる方法を教えてください。
- ベストアンサー
- オフィス系ソフト
- EXCEL2007でワークブックのクローズ処理
教えてください。 EXCEL2003形式ファイルのVBAに、 Private Sub Workbook_BeforeClose(Cancel As Boolean) ThisWorkbook.Close SaveChanges:=False End Sub を記述してファイルを保存します。(作成は、EXCEL2003で保存します。) (仮にBook1.xlsとします。) このファイル(Book1.xls)をEXCEL2007で開きます。 このとき、別のファイル(仮にBook2.xlsとします。形式は、EXCEL2003です)をEXCEL2007で開きます。 で、Book1.xlsを×ボタンで終了すると、 EXCEL2007が異常終了します。 環境依存でしょうか? PCの環境に、EXCEL2003とEXCEL2007が混在しています。
- 締切済み
- オフィス系ソフト
- excel vba 選択されたセルの範囲を別のセル
excel vba 選択されたセルの範囲を別のセルに書き込みたい。 お世話になっております。 乱筆乱文お許し下さい。 EXCEL VBAについてですが、或るブックを閉じる時(Private Sub Workbook_BeforeClose(Cancel As Boolean))にその時点でACTIVEなsheetの名前を指定シートの指定セルに書き込み、そのブックを開く時(Private Sub Workbook_Open())に指定シートの指定セルの値の名前sheetをACTIVEにすることは出来たのですが、もう一歩進んで、 ブックを閉じる時(Private Sub Workbook_BeforeClose(Cancel As Boolean))にその時点でselectされているcellの範囲(単一セル・複数セル共に、名前がついていたら名前、ついていなければrangeを表す文字列)を指定シートの指定セルに書き込み、そのブックを開く時(Private Sub Workbook_Open())に指定シートの指定セルの値の名前cell範囲をselectするようなことがやりたいのですが、私の検索の仕方が下手で、なかなか出てきません。どなたかご教示下さい。よろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- 【Excel VBA】 ブッククローズ時の動作について
環境: WindowsXP Office2003 ThisWorkBookモジュールに、 Private Sub Workbook_BeforeClose(Cancel As Boolean) 'ブックの保存を要求しない ThisWorkbook.Saved = True End Sub と記述しているのですが、保存の有無を聞かれます。 しかしながら、ブックにより聞かれない場合もあります。 原因として考えられるのは、どのようなことでしょうか?
- ベストアンサー
- オフィス系ソフト
- VBAでファイルを閉じる時に、他のエクセルファイルを閉じるには?
VBAで、 Private Sub Workbook_Open() Workbooks.Open FileName:="バス時刻表.xls",ReadOnly:=True End Sub で、バス時刻表.xlsを自動的にオープンした後、 閉じる時に、 Private Sub Workbook_BeforeClose(Cancel As Boolean) Workbooks("バス時刻表.xls").Close End Sub で記述したら、エラーとなります。 どのようにすればいいのでしょうか? よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- Excel VBA 終了時の処理
Excelを終了時にフルスクリーン(リボンなどが非表示の状態)から解除するコードを書きたいのです。 Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.DisplayFullScreen = False 'フルスクリーン化解除 End Sub というコードを書きましたが、Excel自体を×ボタンでクローズした場合は正常に動きますが、 Excelを起動したままPCをシャットダウンすると解除されません。 次回Excelファイルを開くときにはフルスクリーンで出てきてしまいます。 シャットダウン時には、Excelも勝手にクローズされ、その際にマクロが動くものだと思っていましたが... これを回避するコードなどありましたらご教授ください。 環境:windows7 Excel2010 (2013でも動くようにしたいです)
- ベストアンサー
- その他MS Office製品