Contents
この記事で出来ること
こんな感じにメッセージで確認してから実行させたい場合のやり方です。
まずは実際のコードから
Sub saishukakunin1() Dim alert As VbMsgBoxResult alert = MsgBox(“実行してよろしいですか?”, vbYesNo + vbQuestion, “実行確認”) If alert = vbYes Then MsgBox “実行しました。” '←「はい」ボタンをクリックしたときの処理。 End If End Sub
これを実行すると、まず「実行してよろしいですか?」というメッセージとともに「はい」と「いいえ」のボタンが表示されます。
- 「はい」をクリックすると、「実行しました」とメッセージが出ます。
- 「いいえ」をクリックすると終了します。
自分の作ったコードに確認ボタンをつけてみよう!
すでに実行可能なVBAがあって、それに確認ボタンをつけたい場合は、次のように間に挟みます。
Sub saishukakunin1() Dim alert As VbMsgBoxResult alert = MsgBox(“実行してよろしいですか?”, vbYesNo + vbQuestion, “実行確認”) If alert = vbYes Then
ここに実行したいプログラムを書きます。
End If End Sub
コードについて簡単に説明します。
MsgBox関数とIf文を組み合わせ
確認ボタンは、メッセージに対して下のような選択をさせるものです。
- もし「はい」をクリックしたら
- もし「いいえ」をクリックしたら
冒頭ののコードをそのまま使った場合、「はい」をクリックしたら「実行しました。」とメッセージがでてきて、「いいえ」をクリックすると終了します。
「はい」をクリック?「いいえ」をクリック?その結果を変数に入れる
メッセージに対して、
「はい」をクリックしたのか?
「いいえ」をクリックしたのか?
その結果を返す関数がこのメッセージボックス関数です。
結果を変数に入れておいて、それを判定して処理が分岐するわけですね。
だから、次のような書き方が一般的です。
変数名と型を宣言
ここでは変数名を「alert」にしました。
適宜わかり易い名前をつけてください。
型は「VbMsgBoxResult」
変数にMsgBox関数の戻り値を代入
変数の中に入ってくる値をもとに、その後のif分を使って動作を分岐させます。
今回の場合、「はい」というボタンをクリックするとalertという変数に「vbYes」という値が代入されます。
そして、「はい」のときだけ、その後に書かれた処理が実行されます。
MsgBox関数の引数(カッコ内の文字の役割)
戻り値を含め、いろいろな設定をこの引数で決めることができます。
MsgBox(“実行してよろしいですか?”, vbYesNo + vbQuestion, “実行確認”)
↑このカッコ内のそれぞれの意味を見ていくと次のようになります。
- 最初がメッセージ部分。文をダブルクオーテーションではさみます。当然ですが必須項目です。
- vbYesNoの部分はボタンのタイプです。他にも色々あります。省略するとOKボタンだけ表示されますが、今回のように条件分岐させる場合は指定する必要があります。
- vbQuestionはアイコンのスタイルです。これも色々有ります。(ボタンタイプとアイコンスタイルは「+」でつなぎます。アイコンのスタイルが不要の場合は省略できます。)
- メッセージボックスの名前。ボックスの上部に表示される文字で、省略した場合「MicrosoftExcel」と表示されます。
If文について少しだけ説明します
If文の始まり
If alert = vbYes Then
変数「alert」に代入されるの戻り値が「vbYes」ならその次に書かれている内容を実行することになります。
「はい」ボタンをクリックしたときの処理を入れる
ここに「はい」をクリックしたときの動作、つまり「vbYes」が変数に代入されたときの動作をThenの次に書きます。
「いいえ」ボタンをクリックしたときの処理を指定したい場合
冒頭のコードは「いいえ」をクリックすると何もせずに終了します。
「いいえ」をクリックされた場合、つまり「はい」じゃない場合に何かをさせたい場合は「Else」を使います。
例えば「いいえ」をクリックしたときに「実行しません」というメッセージを出す場合などが典型的なケースです。
Sub saishukakunin1() Dim alert As VbMsgBoxResult alert = MsgBox(“実行してよろしいですか?”, vbYesNo + vbQuestion, “実行確認”) If alert = vbYes Then
「はい」をクリックしたときに実行したいプログラムを書きます。
else
「いいえ」をクリックしたときに実行したいプログラムを書きます。
End If End Sub
If文の終了
If文を使ったときは必ず最後に「End If」を入れます。
MsgBoxは基本が詰まっていて楽しい
単純な処理なのにその中には関数の基本である「戻り値」や、「変数の宣言」「If文」「else」など色々詰まっていて学習にはもってこいですね。
たかがメッセージボックス、されどメッセージボックス
最後まで読んでいただきありがとうございます。
少しは参考になったでしょうか。
かく言う私もこの記事をかいてだいぶ頭が整理できました!
コメント