スライドショー

【Excel VBA】MsgBoxでメッセージボックスを表示する方法

Excel VBAでMsgBoxの使い方を知りたい
メッセージボックスでタイトルやアイコンを設定させたい
メッセージボックスで[はい][いいえ]で処理を分岐させたい

Excel VBAでメッセージボックスを表示させるにはMsgBox関数を使えば簡単ですが、初心者にとっては基本的な使い方やパターン別に使い分ける方法がいまいちわからない方も多いのではないでしょうか?

とくにユーザーが選択したボタンで処理を変える方法は、使いやすさの面で重要となります。そこで、この記事ではMsgBox関数でメッセージボックスを表示する方法について、以下の内容で解説していきます。

  • MsgBox関数とは
  • メッセージボックスを表示する方法
  • ユーザーが選択したボタンで処理を変える方法

メッセージボックスを表示させる方法を基礎の基礎から応用的な方法まで網羅的に紹介していますので、ぜひ参考にしてください。

それでは、例を交えながら詳しく解説していきます。

VBAのMsgBox関数とは

MsgBox関数とは、メッセージボックスを表示するための関数です。この関数の引数に指定したメッセージを、次の画像のように表示することができます。

vba_msgbox11

また、メッセージを表示する以外にも、いくつかできることがあります。詳しくは、以降で解説しています。

VBAでメッセージボックスを表示する方法

ExcelVBAでは、メッセージボックスを表示するために、次のようにMsgBox関数を使用します。

MsgBox関数の使い方

MsgBox関数でメッセージを表示するためには、次のサンプルコードのように、メッセージを指定することでメッセージボックスを表示することができます。

Sub Sample()
    MsgBox "これがメッセージボックスです。"
End Sub
[実行結果]

vba_msgbox11

実行結果からメッセージボックスが表示されることを確認できます。

タイトルの設定方法

メッセージボックスのタイトルを変更するためには、次のように引数Titleにタイトル名を指定します。

Sub Sample()
    MsgBox "これがメッセージボックスです。", Title:="ここがタイトルです。"
End Sub
[実行結果]

vba_msgbox21

実行結果からタイトルが変更されたことを確認できます。

アイコンの設定方法

VBAではアイコンを表示させるための標準アイコンが用意されています。次の表にあるような用途で使い分けます。

種類画像定数説明
エラーアイコンvba_msgbox23vbCritical16エラーメッセージで使用します。
疑問符アイコンvba_msgbox26vbQuestion32ヘルプウィンドウを開くメッセージボックスで使用します。
警告アイコンvba_msgbox24vbExclamation48警告のメッセージで使用します。
情報アイコンvba_msgbox25vbInformation64大事な情報を伝えるメッセージで使用します。

メッセージボックスに標準アイコンを表示するためには、次のように引数Buttonsを指定します。

Sub Sample()
    MsgBox "これがメッセージボックスです。", Buttons:=vbInformation
End Sub
[実行結果]

vba_msgbox12

実行結果から標準アイコンが表示されたことを確認できます。

改行コードを使用する方法

MsgBox関数で改行コードを使用するためには、vbCrLfを使用します。次のサンプルコードでは、文字列にvbCrLf(改行コード)を連結するために&(アンパサンド)を使用しています。

Sub Sample()
    MsgBox "これがメッセージボックスです。" & vbCrLf & "メッセージ内で改行することができます。"
End Sub
[実行結果]

vba_msgbox31

実行結果からメッセージが改行されていることを確認できます。この記事には登場しませんが、改行コードにはいくつか種類があります。

改行コードの種類や使い分けの解説をしている、こちらの記事がとても参考になります。改行コードについて詳しく知りたい方は、是非ご覧ください。

【VBA入門】セル内とMsgBox内、コード内での改行コードの使い分け
更新日 : 2019年4月25日

変数の値と文字列を連結して表示する方法

文字列と変数の値を連結するためには、次のように記述します。

"連結したい文字列" & 連結したい変数の値

ExcelVBAでは、文字列や変数の値を&(アンパサンド)で連結できます。次のサンプルコードでは、変数numの値を文字列に連結する為に「str = "変数の値は" & num & "です。"」としています。

Sub Sample()
    Dim num As Integer
    num = 1
    Dim str As String
    str = "変数の値は" & num & "です。"
    MsgBox str
End Sub
[実行結果]

vba_msgbox32

実行結果から文字列と変数の値を連結して表示していることが確認できます。

選択ボタンで処理を分岐する

メッセージボックスでは、ボタンを表示することでユーザーと対話するような形で処理を進めることができます。ここでは、メッセージボックスにボタンを表示し、ユーザーが選択したボタンで処理を変える方法を解説します。

選択ボタンで処理を変えるには?

MsgBoxの戻り値を使用することで、ユーザーが選択したボタンによって処理を変えることができます。MsgBoxの戻り値を代入する変数型は、VbMsgBoxResult列挙型を使います。

VbMsgBoxResult列挙型には、次の表の通り押されたボタンに対応した定数が代入されます。

定数説明
vbOK1[OK]ボタンが押されたことを示します。
vbCancel2[キャンセル]ボタンが押されたことを示します。
vbAbort3[中止]ボタンが押されたことを示します。
vbRetry4[再試行]ボタンが押されたことを示します。
vbIgnore5[無視]ボタンが押されたことを示します。
vbYes6[はい]ボタンが押されたことを示します。
vbNo7[いいえ]ボタンが押されたことを示します。

vbYesNoと[はい]/[いいえ]ボタンで処理を分岐する

引数Buttonsを指定して、メッセージボックスにボタンを表示することができます。引数Buttonsに指定できるボタンは、次の表の通りです。

定数説明
vbOKOnly0[OK]ボタンのみを表示します。
vbOKCancel1[OK]ボタンと[キャンセル]ボタンを表示します。
vbAbortRetryIgnore2[中止]、[再試行]、[無視]の3つのボタンを表示します。
vbYesNoCancel3[はい]、[いいえ]、[キャンセル]の3つのボタンを表示します。
vbYesNo4[はい]ボタンと[いいえ]ボタンを表示します。
vbRetryCancel5[再試行]ボタンと[キャンセル]ボタンを表示します。

引数Buttonsには、次のように上の表からボタンを示す定数か値を指定します。

MsgBox "表示するメッセージ", Buttons:=ボタンを示す定数か値

次のサンプルコードは、[はい]と[いいえ]のボタンを表示し、ユーザーが選択したボタンによって処理を変えています。

Sub Sample()
    Dim rslt As VbMsgBoxResult
    rslt = MsgBox("これは、メッセージボックスですか?", Buttons:=vbYesNo)
    If rslt = vbYes Then
        MsgBox "正解です。"
    Else
        MsgBox "不正解です。"
    End If
End Sub
[実行時]

vba_msgbox41

[実行結果(「はい」を選択した場合)]

vba_msgbox42

[実行結果(「いいえ」を選択した場合)]

vba_msgbox43

実行結果から、ユーザーが選択したボタンによって処理を変わっていることが確認できます。

まとめ

今回は、MsgBox関数を使用してメッセージボックスを表示する方法を解説しました。引数Buttonsを指定することで、標準アイコンやボタンを表示することができましたね。

また、戻り値を利用してユーザーが選択したボタンで処理を変える方法は、ソフトウェア開発では必須の技術と言えます。

もし、忘れてしまった場合はこの記事を思い出してみてください!

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

イシキ マコト

イシキ マコト

フリーランスのエンジニアです。
最近では、プログラミング関連の記事を作成するライターとしても活動しています。

趣味と業務の両方でプログラミング言語をいくつも学んできたので
その経験を活かして分かりやすい記事を作成できればと考えています。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説