AccessでMsgBox関数の使い方をお探しですね。

広告

Access VBAのMsgBoxを使いこなそう!初心者向け完全ガイド

Access VBAでフォーム操作やデータ更新を自動化していると、「処理が終わったよ!」とお知らせしたり、「本当に削除していい?」と確認したりする場面がよく出てきます。

そんなときに活躍するのが**MsgBox関数**です。

MsgBoxは、ただメッセージを表示するだけじゃありません。

改行して読みやすくしたり、「はい・いいえ」の選択結果で処理を変えたりと、いろいろな使い方ができます。

この記事では、Access VBA初心者の方でも実務で迷わず使えるように、基本的な書き方から改行のコツ、戻り値を使った処理の分け方、気をつけたいポイントまで、まとめて解説していきます。

MsgBox関数って何?どんなときに使うの?

Access VBAの**MsgBox関数**は、画面にメッセージボックスを表示するための機能です。

フォームのボタンをクリックしたとき、データを登録する前後、削除や更新の確認、エラーや注意を知らせたいときなど、Accessアプリを使いやすくする場面でよく登場します。

ただ黙々と処理が進むだけのプログラムだと、使っている人は「今何が起きてるの?」と不安になりますよね。

でも、MsgBoxを適切なタイミングで表示すれば、操作ミスを防げたり、安心して使える画面になったりします。

MsgBox関数の基本的な書き方は、主に次の3つを指定します:

– **表示する文章**
– **ボタンやアイコンの種類**
– **タイトルバーに表示する文字**

ヘルプファイルに関する設定もありますが、普通のAccess業務アプリではほとんど使わないので、まずはこの3つを覚えればOKです。

ちなみに、MsgBoxを単に表示するだけなら括弧なしで書くことが多く、戻り値(ユーザーがどのボタンを押したか)を受け取って処理を分けるときは括弧を付けて書く、という違いも覚えておくと便利です。

“`vba
MsgBox “処理が完了しました。

“, vbInformation, “完了”
“`

このコードでは、「処理が完了しました。

」という本文、情報アイコン、タイトルバーの「完了」を指定しています。

2番目の引数には、ボタンの種類やアイコンを指定できます。

例えば:

– OKボタンだけなら `vbOKOnly`
– はい・いいえを表示するなら `vbYesNo`
– 確認を表すアイコンなら `vbQuestion`
– 警告アイコンなら `vbExclamation`
– エラーアイコンなら `vbCritical`

複数の設定を組み合わせたいときは、`vbYesNo + vbQuestion`のようにプラス記号でつなげます。

メッセージを改行する方法と変数を表示するコツ

MsgBoxに表示する文章が長くなると、1行にギュッと詰まって読みにくくなることがあります。

特にAccessでは、「処理件数は○○件」とか「次に△△を確認してください」といった情報をまとめて表示したい場面が多いので、メッセージ内の改行は実務でもよく使います。

MsgBox内で改行するには、改行コードの**`vbCrLf`**を文字列の間に入れます。

文字列と改行コードは、VBAの文字列をつなげる記号である**`&`**でつなぎます。

“`vba
MsgBox “処理が完了しました。

” & vbCrLf & _
“次に一覧画面を確認してください。

“, _
vbInformation, “処理完了”
“`

このコードを実行すると、1行目に「処理が完了しました。

」、2行目に「次に一覧画面を確認してください。

」と表示されます。

`vbCrLf`はWindows環境でよく使われる改行コードで、Access VBAのMsgBoxでは一番わかりやすく扱いやすい方法です。

コードが長くなる場合は、行継続文字の**`_`**(アンダーバー)を使うと読みやすくなります。

ただし、`_`の前には半角スペースが必要なので、忘れないように注意してくださいね。

変数の値も一緒に表示しよう

MsgBoxでは、決まった文字だけでなく、変数の値も表示できます。

例えば、処理したレコード件数を表示したい場合、件数を入れた変数を文字列につなげます。

これで、ユーザーは「処理が終わった」だけでなく、「何件処理されたのか」まで確認できるようになります。

業務用のAccessツールでは、完了メッセージに件数を含めるだけでも、使う人の不安が減って、問い合わせや操作ミスを減らす効果があります。

“`vba
Dim lngCount As Long
lngCount = 25

MsgBox “処理が完了しました。

” & vbCrLf & _
“処理件数は ” & lngCount & ” 件です。

“, _
vbInformation, “処理完了”
“`

変数を組み込むときは、文字列をダブルクォーテーション(`”`)で囲み、変数は囲まずに`&`でつなげます。

数値型の変数でも、MsgBoxに表示する際はVBAが自動的に文字列として扱ってくれます。

ただ、「処理件数は25件です」のように詰まって見えるより、「処理件数は 25 件です」のように適度にスペースを空けると、読みやすいメッセージになります。

「はい・いいえ」で処理を分ける基本パターン

MsgBoxの重要な使い方が、「はい・いいえ」のボタンを表示して、ユーザーの選択によって処理を変える方法です。

例えば、削除処理や一括更新の前に確認メッセージを表示して、「はい」が押されたときだけ処理を実行し、「いいえ」が押されたら中止する、という流れです。

Accessではテーブルのデータを直接変更する処理も多いので、実行前の確認はとても大切です。

この処理の分け方には、MsgBox関数の**戻り値**を使います。

戻り値というのは、ユーザーがどのボタンを押したかを関数が教えてくれる結果のことです。

– [はい]が押されると `vbYes`
– [いいえ]が押されると `vbNo`

が返ってきます。

戻り値を受け取る変数は**`VbMsgBoxResult`型**で宣言すると、コードの意味がわかりやすくなって、入力支援でも定数を選びやすくなります。

“`vba
Dim intAnswer As VbMsgBoxResult

intAnswer = MsgBox(“データを削除してもよろしいですか?”, _
vbYesNo + vbQuestion, _
“削除確認”)

If intAnswer = vbYes Then
MsgBox “削除処理を実行します。

“, vbInformation, “実行”
‘ここに削除処理を書く
Else
MsgBox “削除を中止しました。

“, vbExclamation, “中止”
Exit Sub
End If
“`

この例では、`vbYesNo + vbQuestion`を指定して、はい・いいえボタンと確認アイコンを表示しています。

ユーザーが[はい]を押した場合は削除処理へ進み、[いいえ]を押した場合は中止メッセージを表示して`Exit Sub`でプロシージャを終了します。

実務では、危険な処理ほど「はい」を押したときだけ進む書き方にしておくと安全です。

逆に、何も確認せずに削除や更新を実行するコードは、誤操作が起きたときに復旧が難しくなるので避けましょう。

括弧の使い分けに注意

MsgBoxの戻り値を使う場合は、**引数全体を括弧で囲む**のが基本です。

– 単に`MsgBox “完了しました”`と表示するだけなら括弧なしでもOK
– `intAnswer = MsgBox(…)`のように結果を変数へ代入する場合は括弧を付ける

この違いは初心者の方がつまずきやすいポイントなので、「表示だけなら括弧なし、結果を使うなら括弧あり」と覚えておくと、実装時に迷いにくくなります。

実務で使いやすい応用テクニックと注意点

Access VBAでMsgBoxを実務に組み込むなら、ボタンとアイコンの組み合わせだけでなく、**標準ボタン**やキャンセル時の動きにも注意すると、より安全な画面になります。

標準ボタンで安全性を高める

標準ボタンとは、メッセージボックスが表示されたときに最初から選択状態になっているボタンのことです。

Enterキーを押すと標準ボタンが実行されるので、削除や上書きの確認で[はい]が標準になっていると、利用者が誤ってEnterキーを押しただけで処理が進んでしまう可能性があります。

危険な処理では、**`vbDefaultButton2`**を指定して[いいえ]を標準ボタンにするのがおすすめです。

例えば、`vbYesNo + vbQuestion + vbDefaultButton2`と書くと、はい・いいえのうち2番目の[いいえ]が標準になります。

これで、利用者が誤ってEnterキーを押しても処理が中止されるので、データ削除や一括更新のような取り返しのつかない処理で安全性を高められます。

“`vba
Dim intAnswer As VbMsgBoxResult

intAnswer = MsgBox(“全レコードを更新します。

” & vbCrLf & _
“実行してもよろしいですか?”, _
vbYesNo + vbQuestion + vbDefaultButton2, _
“一括更新確認”)

If intAnswer = vbNo Then
MsgBox “処理を中止しました。

“, vbInformation, “中止”
Exit Sub
End If

‘ここに一括更新処理を書く
MsgBox “一括更新が完了しました。

“, vbInformation, “完了”
“`

キャンセルボタンの扱い方

[キャンセル]ボタンを含むMsgBoxでは、右上の[×]ボタンやEscキーで閉じた場合も**`vbCancel`**が返ってくる点を理解しておく必要があります。

`vbYesNoCancel`や`vbRetryCancel`を使う場合は、キャンセル時の処理を明示的に書いておくと、ユーザーが意図せず閉じた場合にも安全に対応できます。

選択肢が3つ以上になる場合は、If文を連続させるより**`Select Case`**を使うとコードが読みやすくなります。

“`vba
Dim intAnswer As VbMsgBoxResult

intAnswer = MsgBox(“データを保存しますか?”, _
vbYesNoCancel + vbQuestion, _
“保存確認”)

Select Case intAnswer
Case vbYes
MsgBox “保存します。

“, vbInformation, “保存”
‘保存処理を書く

Case vbNo
MsgBox “保存せずに終了します。

“, vbExclamation, “未保存”

Case vbCancel
MsgBox “操作をキャンセルしました。

“, vbInformation, “キャンセル”
Exit Sub
End Select
“`

MsgBoxは「ここぞ」というときに使おう

MsgBoxは手軽に使える一方で、表示しすぎると操作の流れを妨げることがあります。

完了通知、エラー通知、削除前確認など、ユーザーの判断や安心につながる場面に絞って使うことが大切です。

特にAccessのフォームでは、入力チェックで毎回MsgBoxを出すより、必要に応じてコントロールの背景色を変える、ラベルに注意文を出す、といった方法のほうが使いやすい場合もあります。

MsgBoxは「処理を止めてでも伝えるべき内容」に使うと、実務アプリとして自然な操作感になります。

まとめ

Access VBAのMsgBox関数は、基本的な書き方、改行、変数の組み込み、戻り値による処理の分け方を押さえるだけで、実務でかなり活用できます。

まずは次のステップで練習してみましょう:

1. **`vbCrLf`で見やすいメッセージを作る**
2. **`vbYesNo`と`vbQuestion`で確認画面を作る**
3. **`vbYes`や`vbNo`で処理を分ける**

さらに、削除や一括更新では**`vbDefaultButton2`**を使って安全側を標準にすることで、利用者にやさしく、ミスに強いAccessアプリを作れるようになります。

この記事を参考に、ぜひMsgBoxを使いこなしてみてください!

広告