アプリ版:「スタンプのみでお礼する」機能のリリースについて

2003でvba作成中の初心者です。

保存先とファイル名を指定して保存ができるというbvaを作りました。

--------------------------------------

Sub BookCancel()

MsgBox "ファイルを保存します", vbInformation
ファイル名 = "トレーニング"

Application.EnableEvents = False
Application.Dialogs(xlDialogSaveAs).Show arg1:=ファイル名
Application.EnableEvents = True

MsgBox "保存されました。 "
-------------------------------------------

上記を実行した際、「保存」か「キャンセル」の選択ができるフォームが表示されますが、
「キャンセル」した場合の処理を指定するにはどのように入力すればいいのでしょうか?

キャンセルを押すとやりたい処理は、
1.メッセージが表示される「はじめからやりなおしてください」
2.保存をせずにブックを閉じる (「保存しますか?」などのメッセージも何も表示されることなく、
強制終了)
です。

保存の場合は保存し、「保存されました」と通知されるという希望通りになってるので大丈夫です。


お分かりになる方、どうぞ助けてください。
よろしくお願いします。

A 回答 (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
それぞれ追加してくださいませ。
    • good
    • 0
この回答へのお礼

1つ1つ丁寧にご回答くださり、ありがとうございます。
おかげさまで、希望通りのVBAが完成いたしました。

他にも回答をくださった皆さまへも感謝いたします。
ありがとうございました!

お礼日時:2012/12/26 10:23

DialogのShowメソッドは戻り値を持つ関数です。


ファイルを正常に処理できた場合、True を返し、ユーザーがダイアログ ボックスをキャンセルした場合は、False を返します。


If Application.Dialogs(xlDialogSaveAs).Show(arg1:=ファイル名) Then
 ' 保存したときの処理
Else
 ' キャンセルしたときの処理
End If
    • good
    • 0

こんにちは!



こういうコトですかね?

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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!