【Excel VBA入門】メッセージボックスの基本と応用|MsgBox関数

記述編

マクロ関数のひとつMsgBox関数」の使い方をご紹介します。

メッセージ機能にはいろいろな種類があります。
マクロ実行中にメッセージ画面を表示させるだけでなく、選択したボタンによってマクロの動作を変更させる使い方もあります。

こちらではいろいろなシーンに合わせた使い方を具体例をつかってご説明します。

スポンサーリンク

メッセージ機能の使い方

MsgBox関数

こちらが「MsgBox関数」の構文です。

MsgBox(Prompt,[Buttons],[Title],[Helpfile],[Context])

引数対象入力値内容
Promptメッセージ内容の表示
ButtonsボタンvbOKOnly「OK」
ボタンvbOKCancel「OK」or「キャンセル」
ボタンvbAbortRetryIgnore「中止」or「再試行」or「無視」
ボタンvbYesNoCancel「はい」or「いいえ」or「キャンセル」
ボタンvbYesNo「はい」or「いいえ」
ボタンvbRetryCancel「再試行」or「キャンセル」
アイコンvbCritical警告メッセージ
アイコンvbQuestion問い合わせメッセージ
アイコンvbExclamation注意メッセージ
アイコンvbInformation情報メッセージ
標準ボタンvbDefaultButton1第一ボタンを標準設定
標準ボタンvbDefaultButton2第二ボタンを標準設定
標準ボタンvbDefaultButton3第三ボタンを標準設定
Titleメッセージ画面のタイトル名
Helpfileヘルプを表示する場合、ファイル名を指定
Contextヘルプを表示する場合、コンテキスト番号を指定

画面表示の設定

引数の設定によって表示される画面の例をご紹介します。

ボタンの種類

引数「Buttons」に代入する値によって、以下のとおりメッセージボックスのボタンの種類が変わります。こちらの引数を省略した場合は「vbOKOnly」が自動的に適用されます。

・vbOKOnly|「OK」

・vbOKCancel|「OK」or「キャンセル」

・vbAbortRetryIgnore|「中止」or「再試行」or「無視」

・vbYesNoCancel|「はい」or「いいえ」or「キャンセル」

・vbYesNo|「はい」or「いいえ」

・vbRetryCancel|「再試行」or「キャンセル」

アイコンの種類

引数「Buttons」では、ボタンの種類だけではなく、アイコンの種類を指定することもできます。それぞれの引数とメッセージボックスの種類は以下のとおりです。

・vbCritical|警告メッセージ

・vbQuestion|問い合わせメッセージ

・vbExclamation|注意メッセージ

・vbInformation|情報メッセージ

改行の方法

メッセージの文字数がおおくなってしまった場合は「改行」をつかうと効果的です。

VBAでの改行おもに3種類の「改行コード」をつかいます。

改行コード動作意味
vbCrカーソルを先頭へキャリッジリターン文字
vbLf次の行へラインフィード文字
vbCrLfカーソルを次の行の先頭へキャリッジリターンとラインフィードの組み合わせ

一応ご紹介はしていますが「vbCrLf」だけを覚えておけば問題はないと思います。

メッセージ機能の使用例

基本|メッセージの表示

まずはもっともシンプルな使い方をご紹介します。
マクロ実行中にメッセージを表示させる方法です。

Sub test_message1()
    MsgBox ("これがメッセージ機能です。")
End Sub

こちらが実行結果です。
メッセージ画面で「OK」ボタンを押すだけの種類です。

こちらは長いメッセージを見やすく表示させるために改行をつかった例です。

Sub test_message2()
    MsgBox ("このようにメッセージが一行でながくなってしまう場合には" & vbCrLf & "改行を有効的につかいましょう。")
End Sub

こちらが実行結果です。
文章の途中で改行されていることが確認できます。

応用|選択ボタンの分岐処理

「MsgBox関数」と「変数」を組み合わせることによって、メッセージボックスのボタンの選択でマクロ処理を分岐させることができます。

こちらの具体例をつかってご紹介します。

Sub test_message3()
    Dim answer As Long
        answer = MsgBox("このままマクロ実行を続けますか?", Buttons:=vbExclamation + vbYesNo + vbDefaultButton2, Title:="動作確認テスト")

    If answer = vbYes Then
        MsgBox ("マクロを続けます。")
    Else
        MsgBox ("マクロを中断します。")
    End If
End Sub

2~3行目で「変数」をつかってMsgBox関数をさきに定義したうえで、分岐処理に使います。

マクロを実行します。

このようなメッセージ画面が表示されます。

コードの3行目で「vbDefaultButton2」と設定しているため、メッセージボックスが表示されるとき、左から2番目の「いいえ」が選択された状態となっています。
また、おなじ3行目で「Title:=”動作確認テスト”」と記述しているため、メッセージボックスの上部に「動作確認テスト」というタイトルが表示されています。

「はい」を選択した場合はこちら。

「いいえ」を選択した場合はこちら。

このようにメッセージ画面の選択によってマクロ処理を分岐させることができます。

ちなみに選択ボタンによる「戻り値」一覧はこちらです。

選択ボタン戻り値
「OK」vbOK1
「キャンセル」vbCancel2
「中止」vbAbort3
「再試行」vbRetry4
「無視」vbIgnore5
「はい」vbYes6
「いいえ」vbNo7

今回の例ではメッセージボックスのボタンの選択によって、「vbYes」もしくは「vbNo」を「戻り値」として受け取ったうえで「If ~ Then」にて分岐処理をしています。

コード例の5行目に「vbYes」と記述されている部分を、「6」に書換えてもおなじ動作になります。

まとめ

MsgBox関数についてのご説明をしました。

メッセージ機能は単純なメッセージの表示だけではなく、分岐処理にもつかる便利な機能ですので積極的に活用をしてみてください。
特に自分でつくったマクロを他のひとに使ってもらうような場合、こういった機能を付けておくとマクロでできることの幅が広がり喜ばれること間違いなしです。

ただし、あまりメッセージ画面が頻発するようなマクロを作ってしまうとクリック自体が手間になってしまいますので、ほどほどにしておきましょうね。

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