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文を組み合わせれば、ユーザーに優しいシステムが作れます。
改行を使って読みやすいメッセージを作って、適切なボタンとアイコンを選んで、安全で使いやすいプログラムを目指しましょう!
広告
