見出し画像

5-メッセージボックスで選択させる(エクセルマクロ)

メッセージボックスに「OK」「キャンセル」2つのボタンを表示させて選択によって実行内容を分ける。

皆さんこんにちは。
今回は、マクロを実行させる前にワンクッション、実行許可を選択させるメッセージボックスを出して、間違ってボタンを押してしまった際にキャンセルできるように対応する書き方をご紹介します。

◆目標
マクロ実行のボタンを押したときに「マクロを実行しますか。」の確認メッセージを出す。

・[OK]ボタンを押すとマクロが実行される
・[キャンセル]ボタンを押すと、「キャンセルしました。」のメッセージボックスが表示されてマクロがリセットされる。

画像6

◆書くコード

画像1


◆解説
①messe = MsgBox("マクロ実行しますか。", vbOKCancel)
②If messe = vbCancel Then
③  MsgBox "実行キャンセルしました。"
④  Exit Sub
⑤End If
⑥'(実行したい処理)

◆◆
①はメッセージボックスからの戻り値を取得したい場合の書き方です。
   変数=MsgBox("", )
これに対して、③は戻り値を取得せずメッセージのみ表示させる書き方です。MsgBox ""
変数に入れるときはカッコ書きの中にメッセージを入れるんですね。
ここで違いを確認しておきましょう。

② ①で[OK]ボタンが押された場合messeにはvbOKという戻り値が入ります。
[Cancel]ボタンが押された場合messeにはvbCancelという戻り値が入ります。
このことを利用して、vbCancelのときは④のExit Subで実行がリセットされるように書かれています。

★②でmessevbOKのときはIf文の条件に合わないので、⑤のEnd Ifまでスキップします。そして次に書かれているコードに進んで処理を実行します。


◆まとめ

・[Cancel]ボタンが押されたらExit Subで実行リセット
Exit Sub解説➡[4-エラーが発生したらメッセージを出して実行をリセットさせる]
・[OK]ボタンが押されたらIf文をスキップして次の処理から実行する


画像3


画像3

今回書いたコードと前回書いた「ファイルを開くコード」
[4-エラーが発生したらメッセージを出して実行をリセットさせる]で書いたマクロをつなげたのが以下のマクロです。

画像4


マクロらしくなってきましたね!

★このマクロのメイン処理コードは、一番下のファイルを開くコード。
Workbooks.Open mypath & "\" & myfile
これだけです。

自分だけが使う分には、自分でわかっているのでエラー処理をここまで書きませんが、第三者が使うとなると、ここまで必要です。
ファイルを開くコードを実行させるまでにエラー処理が2か所必要なんですね。

今回はここまでです。
使える場面がありましたらどんどん使っていきましょう!
それではまた次回まで。

この記事が気に入ったらサポートをしてみませんか?