[[20230810092730]] 『EXCEL VBA MsgBoxのキャンセル時』(m) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『EXCEL VBA MsgBoxのキャンセル時』(m)

VBA初心者です。
メッセージボックスをマクロ実行の最初に表示させ、もしキャンセルであれば処理中止をしたいのですがわかりません。

'メッセージエラー

    MsgBox "確認済ですか?", vbOKCancel + vbExclamation, "チェック項目"
    If MsgBox("確認済ですか?", vbOKCancel + vbExclamation, "チェック項目") = vbCancel Then
    End
    End If

こちらで試していたのですが、修正をお教えいただけますでしょうか。

< 使用 Excel:unknown、使用 OS:unknown >


https://www.moug.net/tech/exvba/0100051.html
(link) 2023/08/10(木) 09:51:42

キャンセルの確認は上記のリンク先の方法で可能です。

質問の本意とははずれますが、ちょっと気になったので。

処理中止に Endステートメントを使ってますが、これは副作用が大きいので使用すべきではないです。詳細は下記を参照。

End ステートメント (VBA) | Microsoft Learn
https://learn.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/end-statement

Endではなく、Exit Sub を使ってください。

(hatena) 2023/08/10(木) 10:06:22


どうもありがとうございます。Exit subに変換して再度実行いたしましたが、メッセージボックスが一回目表示された後キャンセルをすると、再びメッセージボックスが表示されてしまいます。そこでキャンセルをするとVBE画面となります。メッセージBOXは一回だけでよいのと、VBE画面ではなくて元のEXCELの画面に戻りたいのですが、可能でしょうか。
(m) 2023/08/10(木) 10:12:03

MsgBoxのコードが2つ記述してあるので、当然2回表示されますね。
最初のMsgBoxを削除してください。

下記のコードになってますか。

    If MsgBox("確認済ですか?", vbOKCancel + vbExclamation, "チェック項目") = vbCancel Then
        Exit Sub
    End If

(hatena) 2023/08/10(木) 10:26:21


ありがとうございます。2回表示は解決できました。助かります。ただ、VBE画面に戻るのではなく、VBE画面を閉じたEXCEL workbookの状態に戻りたいのですが、それは難しいですか?
(m) 2023/08/10(木) 10:37:23

お分かりの方いらっしゃいましたらよろしくお願い申し上げます。
(m) 2023/08/10(木) 13:02:41

VBE画面で実行したマクロをVBE画面ではなくブックの方にしたい、ということであれば
おそらく現段階でそのようなことはしない方が良いと考えます。

ブック上でhatenaさんご提示のコードを実行すれば、VBEではなくブック表示のままになると思います。
(西瓜) 2023/08/10(木) 13:14:58


>vbOKCancel
私だったら vbYesNo ににしますけどね。
(VBNO) 2023/08/10(木) 16:57:31

 ワシ... vbOKCancel派です。スマセン。 orz

 実行の是非を問うメッセージの場合は[OK]か[Cancel]かの選択の方が直感的にしっくり来るので、
 ユーザーが[OK]か[Cancel]かで答えられる様なメッセージで問い掛ける様に心掛けます。

 vbYesNoは主に条件等の指定や確認に... あれ? 使ってたかな... ^^;
                                            そもそもあんまり使ってなかったかもwww ^^;

(白茶) 2023/08/10(木) 17:42:43


 いま改めて自ブック見直してみた。やっぱYesNo結構使ってたわぁ... 
 ほとんど条件分岐か再確認メッセージでした。

 で、もひとつ気付いたのが
 Cancelボタン配置したら[Esc]キーでキャンセル出来るんですよね。

 >>直感的にしっくり来る
 の正体はどうやらこれだった模様。

(白茶) 2023/08/10(木) 18:08:37


>>私だったら vbYesNo ににしますけどね。
「確認済ですか?」の問いについてキャンセルはそぐわないと思っての発言でした。
>ユーザーが[OK]か[Cancel]かで答えられる様なメッセージで問い掛ける様に心掛けます。
私はその逆ですね。
メッセージ内容によってアイコンを選択する派です。

(VBNO) 2023/08/10(木) 20:31:12


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.