見出し画像

【ACCESS VBA】メッセージを表示するときどんなコード?

どんなシーンでどんなメッセージ?

メッセージとはシステムを使うユーザーにとって
スムーズにミスなく利用するための
とても大事なツールです
適材適所なメッセージを出すことが大切です

どんなコードで
このメッセージが表示されているのか
みていきましょう

動画で概要を説明 5分7秒

メッセージの表示

まずは一番標準的なメッセージボックスを表示します

動作の流れ

Aを開く(確認のみ)コマンドボタンを押すと

『フォーム A を開きます』と OK ボタンのみのメッセージボックスが表示されます

OKボタンを押すと

フォーム A

フォーム A が開きます

Bを開くか開かないかコマンドボタンを押すと

OKボタンとキャンセルボタンがあるメッセージボックスが表示されます

キャンセルボタンを押すと

「処理を終了します」のメッセージと OKボタンのみのメッセージボックスが表示され OKを押して処理が終了します

OKボタンを押すと

『フォーム B を開きます』と OK ボタンのみのメッセージボックスが表示されます

OKボタンを押すと

フォーム B

フォーム 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システムの運用に役立てたいですね


いいなと思ったら応援しよう!