PR

Accessでメッセージを表示する MsgBox関数の活用

VBA

Accessでフォームを作成し、ユーザーとの対話型処理をする際に、メッセージボックスを表示させる方法があります。特に、ユーザーからの回答の結果を受けてその後の処理を分岐させる等の機能を設けることは、データベース運用において必要なテクニックの一つです。

今回は、Accessフォームでメッセージを表示する方法を紹介します。

スポンサーリンク

MsgBox関数について

Accessではメッセージボックスを表示させるためにMsgBox関数が用意されています。

基本式は以下のように表現されます。

MsgBox (prompt, [ buttons, ] [ title, ] [ helpfilecontext ])
prompt: ダイアログ ボックスにメッセージとして表示される文字列式です。半角で1024文字まで使用でき、vbCrLfを用いて改行することも可能です。(省略不可)
buttons: 表示させるボタンの数と種類、使用するアイコンのスタイル等を指定します。(省略可能)
title: ダイアログボックスのタイトルバーに表示される文字列式です。(省略可能)
helpfile, context: ダイアログボックスに状況依存のヘルプを提供するときに使用するヘルプファイルを指定します。helpfileを用いる場合は、contextも必ず指定します。(省略可能)

ここで、特に重要となる引数は「buttons」になるかと思います。一覧として以下に示します。

表1 ボタンの種類

定数 内容
vbOKOnly 0 [OK] ボタンのみを表示します。
vbOKCancel 1 [OK] ボタンと [キャンセル] ボタンを表示します。
vbAbortRetryIgnore 2 [中止]、[再試行]、[無視] の各ボタンを表示します。
vbYesNoCancel 3 [はい]、[いいえ]、[キャンセル] の各ボタンを表示します。
vbYesNo 4 [はい] ボタンと [いいえ] ボタンを表示します。
vbRetryCancel 5 [再試行] ボタンと [キャンセル] ボタンを表示します。

次に、メッセージボックスに表示するアイコンの種類については以下のとおりとなります。

表2 アイコンの種類

定数 内容
vbCritical 16 [重大なメッセージ] アイコンを表示します。
vbQuestion 32 [警告クエリ] アイコンを表示します。
vbExclamation 48 [警告メッセージ] アイコンを表示します。
vbInformation 64 [情報メッセージ] アイコンを表示します。

続いて、標準ボタンの設定方法です。

表3 標準ボタンの種類

定数 内容
vbDefaultButton1 0 1 番目のボタンが既定です。
vbDefaultButton2 256 2 番目のボタンが既定です。
vbDefaultButton3 512 3 番目のボタンが既定です。
vbDefaultButton4 768 4 番目のボタンが既定です。

また、あまり使う機会はないかもしれませんが、モーダル(他への操作をできなくするような処理のこと)を設定することもできます。

表4 モーダルの種類

定数 内容
vbApplicationModal 0 アプリケーション モーダル。現在のアプリケーションでの作業を続行するには、ユーザーはメッセージ ボックスに応答する必要があります。
vbSystemModal 4096 システム モーダル。ユーザーがメッセージ ボックスに応答するまで、すべてのアプリケーションが中断します。

その他としては以下のとおりです。

表5 その他の種類

定数 内容
vbMsgBoxHelpButton 16384 メッセージ ボックスに [ヘルプ] ボタンを追加します。
vbMsgBoxSetForeground 65536 [メッセージ ボックス] ウィンドウを前景ウィンドウとして指定します。
vbMsgBoxRight 524288 テキストを右揃えにします。
vbMsgBoxRtlReading 1048576 ヘブライ語とアラビア語のシステムでテキストが右から左に読む形式で表示されるように指定します。

続いて、表1で示した各ボタンの戻り値を表6に示します。

表6 MsgBoxの戻り値

定数 内容
vbOK 1 OK
vbCancel 2 Cancel
vbAbort 3 中止
vbRetry 4 再試行
vbIgnore 5 無視
vbYes 6 はい
vbNo 7 いいえ

実は、戻り値は非常に重要なパラメータになります。特に、「vbYes」や「vbNo」は分岐条件の際に多用しますので、是非ここでその内容を知っていただけると良いかと思います。

ここまでで、基本的なMsgBox関数について紹介してきましたので、次からは具体的な使用方法について見ていきましょう。

スポンサーリンク

MsgBox関数の活用: If文との組み合わせ

それでは、さっそくMsgBox関数の活用方法として、If文との組み合わせを見ていきましょう。

まずは、以下のコードを標準モジュールに作成していきます。

Public Sub MsgBox_Func()

'単純なメッセージ表示
MsgBox "これからIf文で処理を分岐させます。", vbOKOnly

'メッセージボックスの選択結果を受けてIf文で処理を分岐させる。
'vbCrLfで改行をしている。
If MsgBox("「はい」か「いいえ」を" & vbCrLf & "選んでください。", vbYesNo + vbQuestion, "If文との組み合わせ") = vbYes Then

  'イミディエイトウィンドウにメッセージを表示する。
  Debug.Print "メッセージボックスで「Yes」が選択されました。"

Else

  'イミディエイトウィンドウにメッセージを表示する。
  Debug.Print "メッセージボックスで「No」が選択されました。"

End If

End Sub

作成した様子を図1に示します。

図1 MsgBox関数の使い方

実装後、作成したプロシージャを画面上の「▶」アイコンをクリックして実行しましょう。

最初の処理は、単純なメッセージボックスを表示するための方法です。ここで「buttons」引数を「vbOKOnly」にしているため、メッセージは「OK」ボタンのみが表示されます。また、「title」引数は未指定のため、「Microsoft Access」という表記になります。

実際に表示されるメッセージボックスを図2に示します。

図2 単純なメッセージボックスの表示結果

次の処理では、MsgBox関数とIf文を用いて分岐をさせています。ここで、MsgBox関数では「prompt」引数で「vbCrLf」を用いてメッセージを改行させています。メッセージが長くなる場合は可読性を高めるために、「vbCrLf」を上手く活用すると良いかと思います。

「buttons」引数では、「vbYesNo」と「vbQuestion」を「+」で繋いでいます。これにより「問い合わせアイコン」が表示され、ボタンは「はい」と「いいえ」が表示されるようになりました。

図3 Yes Noのボタンを持つメッセージボックスの表示結果

ここで、「+」を用いることに違和感を持たれる方がいるかもしれません。つまり、それぞれを「+」で繋いだ場合に足し算により誤認識しないかという点です。先に紹介したとおり、各定数には数値が割り当てられており、「vbYesNo」の場合は「4」が、「vbQuestion」の場合は「32」となります。これらの値を足した場合は「36」となりますが、これに該当する定数はありませんので、自動的に、「vbYesNo」と「vbQuestion」が割り当てられていると判断されメッセージボックスにそれぞれ定数に対する結果が反映されます。これは、他の定数同士の和でも同じことが言えます。そのため、「+」で繋ぐことに問題がないのです。

「vbYesNo」のボタンで「はい」を選択した場合は「vbYes」が、「いいえ」を選択した場合は「vbNo」がそれぞれ戻り値として返されます。

If文では、MsgBox関数の戻り値の結果として「vbYes」をTrueとした場合と、そうでない場合(「vbNo」が返された場合)の「False」での処理に分岐をさせ、それぞれの結果としてイミディエイトウィンドウにテキストを表示させる処理を加えています。

図4 MsgBox関数を用いた分岐処理の結果

このように、MsgBox関数を活用することでユーザーとの対話型処理を実装することができます。

まとめ

今回は、MsgBox関数について基本的な使用方法と、その活用方法の例を紹介しました。特に、Accessフォームを作成しユーザーにデータを入力してもらうようになると、条件を分岐させて処理をする機会が増えてきますが、そのような際にMsgBox関数を上手く利用していただけると良いかと思います。

スポンサーリンク

Kindle Unlimitedにサインアップして無料体験に登録する
Kindle Unlimitedに登録すると、人気のシリーズ、ベストセラー、名作などに好きなだけアクセスして、シームレスなデジタル読書体験を実現できます。

コメント

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