Home » エクセルマクロ・Excel VBAの使い方 » Dialogオブジェクト » 名前を付けて保存ダイアログ・Dialogs(xlDialogSaveAs).Showのキャンセル

名前を付けて保存ダイアログ・Dialogs(xlDialogSaveAs).Showのキャンセル

対象:Excel2010, Excel2013, Windows版Excel2016

アクセスログを眺めていて、
「Application.Dialogs(xlDialogSaveAs キャンセル」
という検索キーワードに気付きました。

Excel VBAのステートメント「Application.Dialogs(xlDialogSaveAs).Show」を実行すると、[名前を付けて保存]ダイアログボックスが表示されます。

[名前を付けて保存]ダイアログボックス

この[名前を付けて保存]ダイアログで、[キャンセル]ボタンを押した場合の処理を、どう書けばいいのか探していらしたのでしょうか。

[スポンサードリンク]

名前を付けて保存ダイアログで条件分岐するサンプルマクロ

以下のSubプロシージャが参考になるはずです。
Sub 名前を付けて保存ダイアログで条件分岐()
 Dim done As Boolean
 done = Application.Dialogs(xlDialogSaveAs).Show
 If done = False Then
  MsgBox "キャンセルされました。"
 End If
End Sub

上記のSubプロシージャを実行して、[名前を付けて保存]ダイアログで[キャンセル]ボタンがクリックされると、
「キャンセルされました。」
とメッセージボックスが表示されます。

保存時にもメッセージ表示するなら、
 If done = True Then
  MsgBox "保存されました。"
 Else
  MsgBox "キャンセルされました。"
 End If
です。

Dialog.ShowメソッドはTrue/Falseを返す

オブジェクトブラウザーの詳細ペインに「As Boolean」と表示されているとおり、

オブジェクトブラウザー:Dialog.Show

DialogオブジェクトのShowメソッドは、論理値(TrueまたはFalse)を返します。

よって上記のような条件分岐でOKです。

If文と論理値に慣れてきたら

If文と論理値に慣れないうちは上述の、
  If done = False Then
や、
  If done = True Then
といった「= False」「= True」を書くほうが理解しやすいはずです。

If文と論理値に慣れてきたら、
  If Not done Then
   MsgBox "キャンセルされました。"
  End If
あるいは、
  If done Then
   MsgBox "保存されました。"
  Else
   MsgBox "キャンセルされました。"
  End If
といった「= False」「= True」を書かない書き方も試してみましょう。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Dialogオブジェクト » 名前を付けて保存ダイアログ・Dialogs(xlDialogSaveAs).Showのキャンセル

「Dialogオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.