Access VBAでMsgBox関数を実行する方法をお探しですね。

広告

AccessのVBAでメッセージボックスを使いこなそう!「はい/いいえ」の分岐と改行のコツ

AccessのVBAでシステムを作っていると、「本当にこのデータを削除していいですか?」みたいな確認メッセージを出したい場面がよくありますよね。

ユーザーに「はい」か「いいえ」で答えてもらって、その後の処理を変えたい――そんなときに活躍するのが「MsgBox関数」です。

今回は、この便利な関数の使い方を、初心者の方にもわかりやすく解説していきます。

MsgBox関数ってどんなもの?まずは基本から

AccessのVBAで、ユーザーにメッセージを伝えたり、確認を取ったりするときに使うのが「MsgBox関数」です。

この関数を使うと、画面に小さなウィンドウ(ダイアログボックス)がポップアップして、好きなメッセージを表示できます。

ただ文字を見せるだけじゃなくて、ユーザーがどのボタンを押したかを受け取って、プログラムの動きを変えることもできるんです。

基本的な書き方は、こんな感じです。

“`

MsgBox "表示したいメッセージ", ボタンの種類, "ウィンドウのタイトル"

“`

最初の「表示したいメッセージ」には、ユーザーに見せたい文章を書きます。

「ボタンの種類」では、「OKだけ」とか「はい・いいえ」とか、どんなボタンを出すか決められます。

「ウィンドウのタイトル」には、ダイアログの上に表示される見出しを入れます。

一番シンプルに使うなら、`MsgBox “登録できました!”` だけでもOKです。

でも、実際に使えるシステムを作るなら、「本当にいいの?」って確認する仕組みが必要ですよね。

そこで、ユーザーに「はい」か「いいえ」を選んでもらって、その答えに応じて処理を変える――そんな使い方が大事になってきます。

メッセージを改行して読みやすくする方法

メッセージが長くなると、ダイアログの中で文章が横にダラーッと続いて、すごく読みにくくなっちゃいます。

そんなときは、好きなところで「改行」を入れることができるんです。

VBAでよく使われる改行コードが「vbCrLf」(ブイビー・シーアール・エルエフ)という特別な記号です。

使い方は簡単。

文章と文章の間に、「&」(アンパサンド)という記号でつなげるだけです。

“`

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

" & vbCrLf & "続けて次の処理を行いますか?"

“`

こう書くと、1行目に「処理が完了しました。

」、2行目に「続けて次の処理を行いますか?」って表示されます。

もっと見やすくしたいときは、空行を入れることもできます。

`vbCrLf` を2つ続けて書けばOKです。

“`

MsgBox "エラーが発生しました。

" & vbCrLf & vbCrLf & "もう一度やり直してください。

"

“`

こうすると、1行目と3行目に文章が表示されて、間に1行空きます。

ユーザーがパッと見て内容がわかるように、適度に改行や空行を入れてあげると親切ですね。

「はい/いいえ」のボタンを出す設定

MsgBoxで「はい」と「いいえ」のボタンを出すには、2番目の引数(ボタンの種類)に「vbYesNo」という値を指定します。

これだけで、OKボタンの代わりに「はい」「いいえ」の2つのボタンが表示されます。

さらに、「これは確認メッセージだよ」ってわかりやすくするために、アイコンも一緒に表示させるのがおすすめです。

たとえば疑問符のアイコンを出したいときは、「vbQuestion」を組み合わせます。

“`

MsgBox "データを削除しますか?", vbYesNo + vbQuestion, "削除の確認"

“`

こう書くと、「?」マークのアイコンと「はい」「いいえ」のボタンが表示されます。

他にも、こんなアイコンが使えます。

– **vbCritical**:赤い×マーク(警告)
– **vbExclamation**:黄色い!マーク(注意)
– **vbInformation**:青いiマーク(お知らせ)

削除とか重要な操作の前には、vbCriticalを使って「これ、大事な確認だよ!」って強調するのも良いですね。

「はい」か「いいえ」かで処理を分ける方法

「はい」「いいえ」のボタンを出したら、次はユーザーがどっちを押したかを判定して、それぞれ違う処理をさせる必要があります。

MsgBox関数は、押されたボタンの情報を「戻り値」として返してくれるんです。

この戻り値を受け取るには、MsgBoxの引数全体を `()` で囲んで、If文と組み合わせます。

“`vba

If MsgBox("削除しますか?", vbYesNo + vbQuestion) = vbYes Then
    ' 「はい」が押されたときの処理
    DoCmd.RunSQL "DELETE FROM テーブル名 WHERE ..."
    MsgBox "削除しました。

    "
Else
    ' 「いいえ」が押されたときの処理
    MsgBox "キャンセルしました。

    "
End If

“`

「はい」が押されたら `vbYes`、「いいえ」が押されたら `vbNo` という値が返ってくるので、それをIf文で判定すればOKです。

実際の仕事では、こんな場面でよく使います。

– **データ削除の前**:間違って消しちゃわないように、必ず確認メッセージを出す
– **処理のキャンセル**:「いいえ」が選ばれたら、何もせずに終了する
– **複雑な判定**:戻り値を一度変数に入れてから、いろんな条件で使い回す

“`vba

Dim result As Integer
result = MsgBox("保存しますか?", vbYesNo + vbQuestion, "確認")

If result = vbYes Then
    ' 保存処理
    MsgBox "保存しました!"
Else
    ' キャンセル処理
    Exit Sub
End If

“`

こんなふうに、変数に入れてから使うと、コードが読みやすくなりますよ。

まとめ

MsgBox関数とIf文を組み合わせれば、ユーザーに優しいシステムが作れます。

改行を使って読みやすいメッセージを作って、適切なボタンとアイコンを選んで、安全で使いやすいプログラムを目指しましょう!

広告