MENU

【VBA】Msgbox関数の使い方|ボタン・アイコン・戻り値の活用法

エクセルマクロでユーザーに情報を伝えるために、MsgBox(メッセージボックス)は非常に便利なツールです。

基本的にマクロは作業を自動実行してくれます。

そのためユーザーは何も考えずにマクロ実行を開始してしまいがちです。

しかし、MsgBoxを活用することで、下記のようなことを確認しながら処理を進めることが可能になります。

  • インプットするファイルは正しいか?
  • 大量データの処理を継続して良いか?
  • データを削除して良いか?

これにより、ユーザーが「こんなアウトプットになると思っていなかった。。。」という状況に陥るのを防ぐことができます。

この記事では、MsgBox の基本的な使い方から応用例までを詳しく解説します。

目次

MsgBox関数の基本構文とシンプルな表示例

MsgBox 関数は、メッセージを表示するための最も基本的な方法です。

基本構文

MsgBox プロンプト, [ボタン], [タイトル], [ヘルプファイル], [コンテキスト]
  • プロンプト: 表示するメッセージを指定します。
  • ボタン(省略可): 表示するボタンの種類を指定します。
  • タイトル(省略可): メッセージボックスのタイトルを指定します。
  • ヘルプファイル(省略可): ヘルプボタンを表示するためのヘルプファイルを指定します。(使わなくてOK)
  • コンテキスト(省略可): ヘルプコンテキストIDを指定します。(使わなくてOK)

シンプルな表示例

次の例では、最低限のシンプルなメッセージを表示します。

Sub BasicMsgBox()
    MsgBox "Hello, World!"
End Sub

Yes/Noなどボタンの追加方法とユーザー応答の取得

ユーザーに確認を取る場面では、”Yes”と”No”の2択でボタンを設定するのが便利です。

これを実現するには、ボタンの種類にvbYesNo を設定します。

基本的な書き方

Dim response As VbMsgBoxResult
response = MsgBox("保存しますか?", vbYesNo)

このコードでは、vbYesNo によって”Yes”と”No”のボタンが表示され、ユーザーが押したボタンによって response に結果が格納されます。

ユーザーの応答に応じて処理を分ける

次のように、If 文や Select Case を使って応答ごとの処理を分岐できます。

If文を使った例

Dim response As VbMsgBoxResult
response = MsgBox("保存しますか?", vbYesNo)
If response = vbYes Then
    MsgBox "保存を実行します"
Else
    MsgBox "保存をキャンセルしました"
End If

Select Case文を使った例

Dim response As VbMsgBoxResult
response = MsgBox("保存しますか?", vbYesNo)
Select Case response
    Case vbYes
        MsgBox "処理を開始します"
    Case vbNo
        MsgBox "処理を中止しました"
End Select

情報・警告・エラーなどのアイコン表示方法

MsgBox では、アイコンを表示してユーザーに直感的なメッセージを伝えることができます。

処理内容に応じて、以下のアイコンを表示できます。

アイコンボタンの引数説明
vbInformation通知、成功など
vbExclamation注意を促すメッセージ
vbCritical処理失敗や重大なエラー
vbQuestionYes/No などの選択を促す質問

アイコン追加方法(情報アイコンを表示)

MsgBox "保存が完了しました", vbInformation

上記コードのように、2番目の引数を vbInformation とすると情報アイコンを表示することができます。

上述のボタンの追加方法でも、2番目の引数にvbYesNo(ボタン設定のための定数)を設定していました。

ボタンとアイコン両方を設定するには、ボタンの定数とアイコンの定数を+ で組み合わせて記述することで実現できます。

ボタンとアイコン両方設定する方法

ボタンの定数とアイコンの定数を組み合わせて記述する実際のコードがこちらです。

Dim response As VbMsgBoxResult
response = MsgBox("本当に削除しますか?", vbExclamation + vbYesNo)

If response = vbYes Then
    MsgBox "削除しました", vbInformation
Else
    MsgBox "キャンセルしました", vbInformation
End If

上記コードでは、2番目の引数にvbExclamationvbYesNo+ で組み合わせて記述しています。

このように、アイコンを表示してあげることで、ユーザーにとってメッセージの意味が直感的に理解しやすくなり「使いやすいマクロだな」と感じてもらうことに繋がります。

まとめ

MsgBox を使えば、エクセルマクロでユーザーに簡単にメッセージを伝えることができます。基本的な使い方から、ボタンオプション、アイコンの使用、戻り値の利用、詳細設定まで、様々な方法でメッセージボックスを活用できます。この記事を参考にして、ぜひマクロの中で活用してみてください。

エクセルマクロに関する他の質問やリクエストがあれば、コメントで教えてください!

この記事を書いた人

めんどくさがりでズボラ。
某自動車メーカーで、VBAやRPAを用いた業務効率化を行っております。

目次