【ACCESS VBA】メッセージを表示するときどんなコード?
どんなシーンでどんなメッセージ?
メッセージとはシステムを使うユーザーにとって
スムーズにミスなく利用するための
とても大事なツールです
適材適所なメッセージを出すことが大切です
どんなコードで
このメッセージが表示されているのか
みていきましょう
動画で概要を説明 5分7秒
メッセージの表示
まずは一番標準的なメッセージボックスを表示します
動作の流れ
Aを開く(確認のみ)コマンドボタンを押すと
『フォーム A を開きます』と OK ボタンのみのメッセージボックスが表示されます
OKボタンを押すと
フォーム A が開きます
Bを開くか開かないかコマンドボタンを押すと
OKボタンとキャンセルボタンがあるメッセージボックスが表示されます
キャンセルボタンを押すと
「処理を終了します」のメッセージと OKボタンのみのメッセージボックスが表示され OKを押して処理が終了します
OKボタンを押すと
『フォーム B を開きます』と OK ボタンのみのメッセージボックスが表示されます
OKボタンを押すと
フォーム B が開きます
フォームの作り方
コマンドボタン
名前:cmd_01
標題:Aを開く(確認のみ)
名前:cmd_02
標題:Bを開くか開かないか
VBAコード
Aを開く(確認のみ)コマンドボタンのクリック時イベント
Private Sub cmd_01_Click()
MsgBox "フォーム A を開きます"
DoCmd.OpenForm "F_A"
End Sub
MsgBox "フォーム A を開きます"
メッセージとOKボタンのみのメッセージボックスを表示します
DoCmd.OpenForm "F_A"
F_Aフォームを開きます
Bを開くか開かないかコマンドボタンのクリック時イベント
Private Sub cmd_02_Click()
Dim res As VbMsgBoxResult
res = MsgBox("フォーム B を開きますか?", vbOKCancel)
If res = vbOK Then
MsgBox "フォーム B を開きます"
DoCmd.OpenForm "F_B"
Else
MsgBox "処理を終了します"
End If
End Sub
Dim res As VbMsgBoxResult
MsgBox関数の戻り値を受け取る変数を宣言します
res = MsgBox("フォーム B を開きますか?", vbOKCancel)
OKとキャンセルボタンのあるメッセージを表示しクリックされたボタンに相当する値を変数 res に代入します
If res = vbOK Then
MsgBox "フォーム B を開きます"
DoCmd.OpenForm "F_B"
クリックされたボタンが「OK」の場合
OKボタンのみのメッセージを表示したあとF_Bフォームを開きます
Else
MsgBox "処理を終了します"
End If
OKボタン以外(キャンセルボタン)が押されたとき
メッセージを表示し処理を終了します
メッセージボックス MsgBox関数とは
MsgBox関数
MsgBox ( prompt, [buttons,] [title,] [helpfile, context] )
prompt : ダイアログボックスにメッセージとして表示される文字列式
(半角で1024文字まで使用でき、vbCrLf を用いて開業することも可能です 省略不可)
buttons : 表示させるボタンの数と種類、使用するアイコンのスタイル等を指定します(省略可能)
title : ダイアログボックスのタイトルバーに表示される文字列式(省略可能)
helpfile, context : ダイアログボックスに状況依存のヘルプを提供するときに使用するヘルプファイルを指定します helpfile を用いる場合は context も必ず使用します(省略可能)
ボタン (buttons)引数
ボタンの種類
vbOkOnly : 0 「OK」のみ
vbOkCancel : 1 「OK」と「キャンセル」
vbAbortRetryIgnore : 2 「中止」「再試行」「無視」
vbYesNoCancel : 3 「はい」「いいえ」「キャンセル」
vbYesNo : 4 「はい」「いいえ」
vbRetryCancel : 5 「再試行」「キャンセル」
アイコンの種類
vbCritical : 16 「重大なメッセージ」
vbQuestion : 32 「警告クエリ」
vbExclamation : 48 「警告メッセージ」
vbinformation : 64 「情報メッセージ」
MsgBox関数の戻り値
vbOk : 1 「OK」
vbCancel : 2 「キャンセル」
vbAbort : 3 「中止」
vbRetry : 4 「再試行」
vbIgnore : 5 「無視」
vbYes : 6 「はい」
vbNo : 7 「いいえ」
標準ボタンの設定
vbDefaultButton1(規定値) : 0 第1ボタンを標準ボタンにする
vbDefaultButton2 : 256 第2ボタンを標準ボタンにする
vbDefaultButton3 : 512 第3ボタンを標準ボタンにする
vbDefaultButton4 : 768 第4ボタンを標準ボタンにする
メッセージボックス 具体例
その①
MsgBox "その①", vbOKOnly
その②
MsgBox "その②", vbOKCancel + vbCritical + vbMsgBoxHelpButton
その③
MsgBox "その③", vbAbortRetryIgnore + vbQuestion + vbMsgBoxHelpButton + vbDefaultButton3
その④
MsgBox "その④", vbYesNoCancel + vbExclamation + vbMsgBoxRight
その⑤
MsgBox "その⑤", vbYesNo + vbInformation, "どっち?"
その⑥
MsgBox "その⑥", vbRetryCancel + vbMsgBoxHelpButton + vbDefaultButton2
入力用ダイアログボックスの表示
InputBoxを使うとデータ入力のダイアログボックスを表示することができます
動作の流れ
パスワードの入力をうながすダイアログボックスが表示されます
キャンセルボタンを押すと
パスワードが間違っていたら
正しいパスワードが入れられたら
フォーム F_A が開きます
VBAコード
Private Sub cmd_01_Click()
Dim pw As String
pw = InputBox("パスワードをいれてください")
If StrPtr(pw) = 0 Then
MsgBox "キャンセルされました"
ElseIf pw = "access" Then
DoCmd.OpenForm "F_A"
Else
MsgBox "パスワードがちがいます"
End If
End Sub
Dim pw As String
インプットボックスに入力された文字を代入する変数を宣言します
pw = InputBox("パスワードをいれてください")
インプットボックスを表示し 入力された文字を変数に代入します
If StrPtr(pw) = 0 Then
MsgBox "キャンセルされました"
キャンセルボタンがクリックされたかどうかを判定し
キャンセルボタンが押されたときのメッセージを表示
ElseIf pw = "access" Then
DoCmd.OpenForm "F_A"
入力された文字が 設定したパスワード(access)で正しければ
フォームを開きます
Else
MsgBox "パスワードがちがいます"
End If
パスワードが間違っていれば メッセージを表示し処理を終わります
InputBox 関数 具体例
その①
InputBox("出身地をいれてください", "出身地入力", "東京")
ダイアログボックスを
「出身地をいれてください」のメッセージと
タイトルを「出身地入力」とし
初期値に「東京」を設定して表示しています
その②
InputBox("出身地をいれてください", "出身地入力", "東京", 2000, 2000)
その②はその①をベースに 2000, 2000 で
画面の左端からダイアログボックスの左端までの水平方向の距離と
画面の上端までの垂直方向の距離を twip単位で指定しています
省略すると その①のように 画面の中央に位置して配置されます
ダイアログボックスに出身地をいれると
例えば 「富山県」といれました
メッセージボックスに 「あなたは 富山県 生まれです」と表示されます
VBAコード
Private Sub cmd_02_Click()
Dim strA As String
strA = InputBox("出身地をいれてください", "出身地入力", "東京")
If StrPtr(strA) = 0 Then
MsgBox "キャンセルされました"
Else
MsgBox "あなたは " & strA & " 生まれです"
End If
End Sub
Dim strA As String
インプットボックスに入力された文字を代入する変数を宣言します
strA = InputBox("出身地をいれてください", "出身地入力", "東京")
インプットボックスを表示し メッセージに「出身地をいれてください」
タイトルに「出身地入力」 初期値に「東京」をいれています
If StrPtr(strA) = 0 Then
MsgBox "キャンセルされました"
キャンセルボタンがクリックされたかどうかを判定し
キャンセルボタンが押されたときのメッセージを表示
Else
MsgBox "あなたは " & strA & " 生まれです"
入力されてOKボタンが押されたとき
メッセージボックスに 入力された文字 strA を結合して表示されます
まとめ
メッセージボックスやインプットボックスは ユーザーとの対話型処理をする際に必要なテクニックといえます。特にユーザーからの回答の結果を受けてその後の処理を分岐させる等の機能を設けることは データベース運用においてよく利用されます
簡単なメッセージを表示して 現在の処理の状況やその後の処理の確認や
分岐を伴うメッセージにより 処理を分ける場合にとても便利な機能です
いろんな表示方法を理解して より分かりやすいメッセージを利用し Accessシステムの運用に役立てたいですね