【Access関数】MsgBox関数の使い方|構文・具体例

その他の関数

VBAを使う中で、最も早く触れる関数のひとつがMsgBox(メッセージボックス)関数でしょう。
エラー通知、処理完了の案内、削除確認など幅広い場面で利用され、実務でも使用頻度は非常に高い関数です。

本記事では、基本的な構文や具体的な使い方について解説します。

MsgBox関数とは

MsgBox関数は、メッセージボックスという表示枠をポップアップ表示し、ユーザーからの選択(ボタン押下)を受けて、その結果に応じた処理に進められる関数です。

メッセージボックスはこのようなものです。

メッセージボックスサンプル

「ユーザーに知らせる」「確認を取る」「制御を分岐させる」場面で非常に出番が多く、「基本中の基本」と言えます。

MsgBox関数は表示するだけでなく、必要に応じてボタンを設置し、処理の判断や入力チェックにも活用できます。ユーザーとの対話を担う大事なインターフェース機能であり、Accessで業務ツールを作成するうえで欠かせない関数です。

構文

基本構文

MsgBox(メッセージ, [ボタンとアイコンの指定,] [タイトル,] [ヘルプファイルのパス,] [ヘルプコンテキストID])

各引数の内容は次のとおりです。

引数一覧

引数必須/省略内容
メッセージ必須ユーザーに表示する文字列
ボタンとアイコン指定省略可ボタンの種類(OK/Cancel/Yes/No等)と、
アイコン(情報/警告/エラー/質問)を指定
設定値は【表1】を参照
タイトル省略可メッセージボックス上部に表示されるタイトルバー
の文字列
ヘルプファイルのパス省略可ヘルプボタンを付ける場合に、参照するchmファイル
のパスを指定
使用頻度は少ないです
ヘルプコンテキストID省略可ヘルプファイル内の該当ページを識別するための数値ID
ヘルプファイルを設定した場合は必須

定数一覧

【表1】「ボタンとアイコン指定」に用いる設定値(主なものを抜粋)

定数名種類内容
vbOKOnlyボタンOKボタンのみ
vbYesNoYes/Noボタン
vbYesNoCancelYes/No/キャンセルボタン
vbOKCancelOK/キャンセルボタン
vbAbortRetrylgnore中止/再試行/無視ボタン
vbRetryCancel再試行/キャンセルボタン
vbMsgBoxHelpButtonヘルプボタン
vbInformationアイコン情報アイコン(iマーク)
vbExclamation注意アイコン(!マーク)
vbCritical警告アイコン(赤×)
vbQuestion問い合わせアイコン(?マーク)
vbDefaultButton1その他1つ目のボタンに規定値設定
vbDefaultButton22つ目のボタンに規定値設定
vbDefaultButton33つ目のボタンに規定値設定
VbMsgBoxSetForegroundダイアログボックスを最前面

種類が異なる定数を「+」で結ぶことで、ボタンとアイコンを組み合わせて表示することができます
また同種の定数を組み合わせても、一方は無視されます。

戻り値一覧

メッセージボックスで[OK]や[キャンセル]などのボタンをクリックすると、その選択結果に応じた値が返されます。この返される値を戻り値と呼びます。

実務では、この戻り値を利用して If文などで分岐処理を行い、後続の処理を制御するのが一般的です。
具体例は後半でご紹介します。

戻り値(定数)戻り値(数値)クリックしたボタン名
vbOK1[OK]ボタン
vbCancel2[キャンセル]ボタン
vbAbort3[中止]ボタン
vbRetry4[再試行]ボタン
vbIgnore5[無視]ボタン
vbYes6[はい]ボタン
vbNo7[いいえ]ボタン

メッセージボックス表示例

ボタンとアイコンの組み合わせを中心に、メッセージボックスの表示例を3パターンか紹介します。

Yes/Noボタン+情報アイコン

MsgBox(“実行しますか?”,vbYesNo+vbInformation,”確認!”)

中止/再試行/無視ボタン+問い合わせアイコン

MsgBox(“エラーが発生しました”,vbAbortRetryIgnore+vbQuestion)

OK/キャンセルボタン+注意アイコン+3つ目ボタン規定値

MsgBox(“処理を続行しますか?”,vbOKCancel+vbExclamation+vbDefaultButton2)

この例では、ボタン種類(vbOKCancel)、アイコン(vbExclamation)、そして既定ボタン(vbDefaultButton2)を組み合わせています。
設定により、メッセージボックス表示時のカーソルは2つ目のボタン(キャンセル)に自動的に位置します。

このような設定が役立つ場面として、たとえば大量データを対象にした更新クエリ実行時が挙げられます。誤って Enter キーを連続して押してしまった場合でも、既定ボタンがキャンセルになっていれば、意図せず処理が進行するリスクを減らすことができます

このように、操作ミスを防ぐための細やかな配慮も、Accessを使った業務ツール開発では重要なポイントです。

MsgBox関数の応用的な使い方

戻り値を取得して処理を分岐させる

前述したように、クリックしたボタン種類に応じて戻り値が返ります。その戻り値を判断式で判定することで、処理を分岐させることができます。

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

If result = vbYes Then
'削除処理
MsgBox "削除しました。", vbInformation
Else
MsgBox "処理を中止しました。", vbInformation
End If

【解説】

1行目では、メッセージボックスの戻り値を受け取るための変数を宣言します。
この変数のデータ型は VbMsgBoxResult 型を指定するのが理想的です。

もちろん、Integer型やLong型でも動作はしますが、VbMsgBoxResult型を使用することで戻り値候補が自動表示され、入力ミスを防ぎながらスムーズにコーディングできます。

4行目では、[はい]ボタンがクリックされているかどうか判定し、されている場合は5行目で実際の削除処理が実行されます。処理実行後、6行目で処理が完了した旨のメッセージボックスを表示して終了となります。

なお、戻り値による分岐は以下のような、変数を使わない方法でも同じように実行できます。

If MsgBox("本当に削除しますか?", vbYesNo + vbExclamation, "確認") =vbYes Then
'削除処理
MsgBox "削除しました。", vbInformation
Else
MsgBox "処理を中止しました。", vbInformation
End If

シンプルなのは後者ですが、可読性が高いのは前者でしょう。特徴を把握したうえで、使い分けてよいと思います。

改行を入れてメッセージを読みやすくする

メッセージの文章が長くなる場合は、改行を入れることで読みやすくなります。

MsgBox ("処理が完了しました。" & vbCrLf & "次の作業に進んでください。",vbInformation ,"完了")

または

MsgBox "処理が完了しました。" & chr(13) & "次の作業に進んでください。", vbInformation, "完了"

どちらも下記のメッセージボックスが表示されますが、同じ改行でも両者の意味合いは少し異なります。

  • vbCrLf…Windowsでの一般的な改行方式
  • Chr(13)…Chr()はASCIIコードから文字を作る関数。その中でChr(13)は行頭へ戻るという命令となり、結果として改行効果がある

基本的に「改行はvbCrLf」と覚えておけば間違いないでしょう

関数化して使いまわせるようにする

たとえば、データ削除する場合の確認メッセージなどは、Accessでツールを構築すると何度も登場するメッセージです。これをその都度コードを書くのではなく、関数化して使いまわすことも可能です。

Function ConfirmDelete() As Boolean
    ConfirmDelete = (MsgBox("削除しますか?", vbYesNo + vbQuestion, "確認") = vbYes)
End Function

' 呼び出し側
If ConfirmDelete() Then
   ※削除処理
    MsgBox "削除が完了しました。", vbInformation
End If

1行目から3行目部分を標準モジュールでFunctionプロシージャとして作成しておくことで、他のプロシージャからいつでも呼び出すことができます。

まとめ

MsgBox関数は、Access開発において「通知・確認・分岐」の役割を担う基本中の基本といえます
以下のポイントを押さえれば、MsgBox関数をうまく活用できると思います。

  • 基本文法を理解する
  • ボタン・アイコン指定を使いこなす
  • 戻り値を活用して処理を分岐する
  • 読みやすさ・ユーザー心理を意識する

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