エクセルVBA超入門講座(第8回)メッセージボックスの使い方

excel-vba-lecture08 Excelマクロ

今回はVBAでのメッセージボックスの使い方について解説します。

メッセージボックスを使いこなせれば、ユーザ視点で優しいメッセージを出すことが出来たり、選択したメッセージの回答によって処理を変えたり、マクロで出来ることの幅が広がります。

メッセージボックスはコンピュータとユーザ(人間)をつなぐ架け橋のようなものです。

とても重要な役割を担っています。

ぜひ今回の講義でメッセージボックスについてマスターしましょう!!

メッセージボックスとは

天馬先生
天馬先生

今回は「メッセージボックス」について解説するよ。

次のような画面見たこともないかな?

たけし
たけし

あ、見たことあります!

何か操作した時に表示されるメッセージですね!

天馬先生
天馬先生

そう。何か操作したときに表示される画面のことを「メッセージボックス」というよ。

天馬先生
天馬先生

このメッセージボックスはユーザに何か知らせたり、ユーザに何か選択をさせる時に必要となるマクロには欠かせない機能なんだ。

特に、処理が完了した場合などは次のようなメッセージボックスをよく使用します。

finish-message

このようなメッセージがないといつ処理が完了したか分かりません。

メッセージボックスがある事で、ユーザに今のコンピュータの処理状況を知らせてくれる役割を果たしています。

メッセージボックスはマクロを実行したときに、「警告」「エラー」「お知らせ」などの通知機能の他に、ユーザに何かを選択させ、その選択した結果によって処理を変える判定機能の2つの機能があります。

それぞれの機能については後ほど詳しく説明します。

メッセージボックスの表示方法

まずはVBAでメッセージボックスを表示させる方法を解説します。

VBAでのメッセージボックスの記載方法は次のようになります。

display-MsgBox2

このマクロを実行すると次のメッセージボックスになります。

msgbox-sample2

VBAでの書き方は基本的に次のようになります。

MsgBox “メッセージ内容”, ボタンの種類+アイコンの種類, “タイトル”
「メッセージ内容」は必須です。その他については省略可です。
省略した場合はマクロの規定値が自動的に適用されます。
 

アイコン設定について

メッセージボックスでは「警告」「エラー」「お知らせ」などの標準アイコンが用意されており、ユーザに何か知らせる通知機能の役割を持っています。

アイコンの種類について

メッセージボックスには次の標準アイコンが用意されています。

アイコンの種類 画像 記載方法 使用方法
情報アイコン msgbox-information vbInformation 何か情報を伝える時に使用します
警告アイコン msgbox-exclamation vbExclamation 警告メッセージを伝える時に使用します
エラーアイコン msgbox-critical vbCritical エラーメッセージを伝える時に使用します
問い合わせアイコン msgbox-question vbQuestion ユーザに選択肢を訊ねる時に使用します

例えば次のように使用します。

情報アイコンを用いると、VBAでは次のように書きます。

information-sample

記述内容は以下になります。

MsgBox “処理が終了しました!お疲れ様でした!”, vbInformation

これを実行すると次のメッセージボックスが表示されます。

information-message

エラーアイコンを用いると、VBAでは次のように書きます。

critical-sample

これを実行すると次のメッセージボックスが表示されます。

記述内容は以下になります。

MsgBox “値の指定が間違っています!A1セルの内容を確認してください”, vbCritical

これを実行すると次のメッセージボックスが

critical-message

天馬先生
天馬先生

このように標準アイコンを使い分ける事によって、メッセージの内容がどんな意味合いか視覚的に判断できるよ

たけし
たけし

確かに直観的に分かりやすいですね!

アイコンの使い分けが出来るとVBA書くのが楽しくなりますね♪

天馬先生
天馬先生

しかもメッセージ表示する時にアイコンの種類によって音も鳴るから、ぜひ実際にサンプルを作って試してみてね。

ボタン設定について

通知機能の他にも、ユーザに何かを選択させ、その選択した結果によって処理を変える判定機能があります。

判断機能を使用する場合にボタン設定を行います。

ボタンの種類について

メッセージボックスには次の標準ボタンが用意されています。

記載方法 使用方法
vbOKOnly 「OK」ボタンのみ表示します
vbOKCancel 「OK」「キャンセル」2つのボタンを表示します
vbYesNo 「はい」「いいえ」2つのボタンを表示します
vbYesNoCancel 「はい」「いいえ」「キャンセル」3つのボタンを表示します
vbRetryCancel 「再試行」「キャンセル」2つのボタンを表示します
vbAbortRetryIgnore 「中止」「再試行」「無視」3つのボタンを表示します

例えば次のように使用します。

vbYesNoボタンを用いると、VBAで書くと次のようになります。

yesno-sample

記述内容は以下になります。

MsgBox “このまま処理を続けてよろしいでしょうか?”, vbYesNo

これを実行すると次のメッセージボックスが表示されます。

msgbox-yesno

天馬先生
天馬先生

メッセージ内容に応じてボタンの種類を設定してね。

ボタンの戻り値について

天馬先生
天馬先生

メッセージボックスのボタンでは「戻り」の値によって処理を判断するよ

たけし
たけし

戻り値?初めて聞きました。何ですかそれ?

天馬先生
天馬先生

ごめん、説明していなかったね。戻り値とは処理の結果によって戻される値の事をいうよ。

先ほどのメッセージボックスをもう1度見てみましょう。

msgbox-yesno

このメッセージボックスでユーザが「はい」を選んだとします。

「はい」を選んだという事がコンピュータに返されます。

コンピュータに何が選ばれたか教えてあげるのです。

この返される値を戻り値といいます。

戻り値が返されることによって、コンピュータは次の処理を変える判断基準となります。

戻り値はボタンごとに決まっています。

定数 説明
vbOK 1 「OK」ボタンが選択されたことを意味します
vbCancel 2 「キャンセル」ボタンが選択されたことを意味します
vbAbort 3 「中止」ボタンが選択されたことを意味します
vbRetry 4 「再試行」ボタンが選択されたことを意味します
vbIgnore 5 「無視」ボタンが選択されたことを意味します
vbYes 6 「はい」ボタンが選択されたことを意味します
vbNo 7 「いいえ」ボタンが選択されたことを意味します

例えば、次のメッセージボックスで

msgbox-yesno

「はい」を選択した場合の戻り値は”vbYes”(または”6″)となります。

定数でも記載可能ですし、数値でも記載可能です。

戻り値による条件分岐

では、第6回講座で学んだIf文を使用して戻り値によって処理を変更する方法を見てみましょう。

戻り値を用いる場合は次のように記載します

If MsgBox (“メッセージ内容”, ボタンの種類+アイコンの種類) = 戻り値 Then
 処理内容
End if

メッセージボックス単独で表示される場合は”MsgBox”と”メッセージ内容”の間は半角スペース” “でしたが、If文などを使用して戻り値を利用する場合は半角カッコ()を使用します。

例)次のようにA1セルに「いぬ」と書かれたExcelがあります。

before-message

このExcelに次のマクロを実行します。

message-choice

記述内容は以下になります。

If MsgBox (“A1セルの内容を「ねこ」に変更してよろしいでしょうか?, vbYesNo) = VbYes Then
 Range(“A1”).Value = “ねこ”
End if

すると次のメッセージボックスが表示されます。

message-cat

ここで「はい」を選択するとA1セルの内容が「ねこ」に変わります。

after-message

これはメッセージボックスの戻り値が「vbYes(=6)」が返されたためです。

戻り値の判断基準を定数「vbYes」ではなく、次のように値「6」で指定しても同じ結果が得らえれます。

message-choice2

天馬先生
天馬先生

値で指定することも可能ですが、定数で指定した方が直観的に分かりやすいので、おすすめです。

アイコンとボタンを組み合わせる

上記で説明したアイコンとボタンは組み合わせることが可能です。

MsgBox “メッセージ内容”, ボタンの種類+アイコンの種類, “タイトル”

たとえば、先ほどの例で、問い合わせアイコンと「はい」「いいえ」ボタンを組み合わせる場合はVBAでは次のように記載します。

message-choice3

記述内容は以下になります。

If MsgBox (“A1セルの内容を「ねこ」に変更してよろしいでしょうか?, vbYesNo + vbQuestion) = VbYes Then
 Range(“A1”).Value = “ねこ”
End if

このマクロを実行すると次のメッセージボックスが表示されます。

combination-message

天馬先生
天馬先生

このようにメッセージ内容とボタンの種類、アイコンの種類を合わせる事でユーザに分かりやすいメッセージを表示させることが出来るよ。

たけし
たけし

確かにこれだと質問されているのが分かりやすいですね!

改行の挿入する

メッセージは改行も挿入する事ができます。

VBAでは改行する場合vbCrLfを使用します。

次のように記載します。

MsgBox “メッセージ内容1行目” & vbCrlf & “メッセージ内容2行目”

1行目と2行目のメッセージの間に アンド記号(&)を入れて繋ぎます。

VBAで記載すると次のようになります。

line-feed

記述内容は以下になります。

If MsgBox (“A1セルの内容を「いぬ」です” & vbCrlf &に変更してよろしいでしょうか?, vbYesNo + vbQuestion) = VbYes Then
 Range(“A1”).Value = “ねこ”
End if

このマクロを実行すると次のメッセージボックスが表示されます。

line-feed2

長いメッセージは1行だと見づらいので必要に応じて改行しましょう。

まとめ

今回の講座ではメッセージボックスについて解説しました。

アイコンの種類やボタンの種類、改行の方法、また戻り値についても解説しました。

メッセージボックスを駆使する事でユーザに優しいマクロを組むことが出来るだけでなく、ユーザが選択した値によって処理を分けるとても重要な役割を担っています。

メッセージボックスをマスターし、カッコイイそして素敵なマクロを作れるようになりましょう!

最後までお読みいただき、ありがとうございました!

~天然マクロ学校~

コメント

タイトルとURLをコピーしました