- ベストアンサー
キャンセル処理の方法が分かりません
- キャンセル処理の方法について質問です。VBA初心者の方ですが、保存先とファイル名を指定して保存するVBAを作成しました。しかし、保存する際に「保存」か「キャンセル」の選択ができるフォームが表示されます。キャンセルを押した場合の処理方法が分かりません。具体的な処理方法を教えていただきたいです。
- キャンセル処理の方法についての質問です。ExcelのVBAで保存先とファイル名を指定して保存するプログラムを作成しました。保存時に表示されるフォームで「キャンセル」を押した場合、指定した処理が行われずに終了するようにしたいです。具体的な処理方法を教えていただけると助かります。
- VBA初心者です。キャンセル処理について教えてください。特定のファイル名で保存するプログラムをVBAで作成しましたが、保存時に表示されるフォームでキャンセルを選択した場合、指定した処理が行われないようにしたいです。どのように入力すればいいのでしょうか?具体的な処理方法を教えていただけると助かります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
なんとなく、考えてみました。 Sub BookCancel() MsgBox "ファイルを保存します", vbInformation ファイル名 = "トレーニング" Application.EnableEvents = False BC1: If Application.Dialogs(xlDialogSaveAs).Show(arg1:=ファイル名) = True Then MsgBox "保存されました。 " Else If MsgBox("最初からやり直しますか?", vbYesNo) = vbYes Then GoTo BC1 Else MsgBox "処理を中断しました。", vbOKOnly End If End If Application.EnableEvents = True End Sub 1)まず、メッセージ「保存します」 2)保存ダイアログ「初期ファイル名:トレーニング」 ・「保存」を押したら・・・保存してメッセージ「保存しました」で終了 ・「キャンセル」したら以下の分岐 3)意思確認メッセージ「最初から?」(ボタンは「はい/いいえ」) ・「はい」を押したら・・・ダイアログ表示からやり直し ・「いいえ」を押したら・・・メッセージ「中止しました」で終了 こんな感じの流れです。 > 2.保存をせずにブックを閉じる これを追加するなら、 MsgBox "処理を中断しました。", vbOKOnly この直後に ActiveWorkbook.Close SaveChanges:= False エクセルも閉じるなら、 Application.Quit ActiveWorkbook.Close SaveChanges:= False それぞれ追加してくださいませ。
その他の回答 (2)
- nag0720
- ベストアンサー率58% (1093/1860)
DialogのShowメソッドは戻り値を持つ関数です。 ファイルを正常に処理できた場合、True を返し、ユーザーがダイアログ ボックスをキャンセルした場合は、False を返します。 If Application.Dialogs(xlDialogSaveAs).Show(arg1:=ファイル名) Then ' 保存したときの処理 Else ' キャンセルしたときの処理 End If
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! こういうコトですかね? If MsgBox("ファイルを保存しますか?", vbYesNo) = vbYes Then ファイル名 = "トレーニング" Application.EnableEvents = False Application.Dialogs(xlDialogSaveAs).Show arg1:=ファイル名 Application.EnableEvents = True MsgBox "保存されました。 " Else MsgBox "はじめからやりなおしてください。", vbOKOnly Exit Sub End If ご希望通りでなかったらごめんなさいね。m(_ _)m
お礼
1つ1つ丁寧にご回答くださり、ありがとうございます。 おかげさまで、希望通りのVBAが完成いたしました。 他にも回答をくださった皆さまへも感謝いたします。 ありがとうございました!