LoginSignup
0
0

AccessのVBAでメッセージボックス(ダイアログ)表示(ボタンの初期選択や、はい、いえ、キャンセルの3択など)

Last updated at Posted at 2023-08-03

やり方(メッセージとOKボタンのみ)

MsgBox "おわったよ。"

実行結果。
image.png

やり方(メッセージの左にアイコン付)

MsgBox "!マーク", vbExclamation

image.png

MsgBox "×マーク", vbCritical

image.png

MsgBox "?マーク", vbQuestionMsgBox

image.png

MsgBox "iマーク", vbInformation

image.png

やり方(2択)

If MsgBox("やっていい?", vbYesNo + vbDefaultButton2) = vbNo Then
    'いいえを押した時の処理。
End If
  • vbYesNo によって『はい』『いいえ』の2択にできます。
  • vbDefaultButton2 によってデフォルト選択を 左から2番目のボタン に指定できます。

実行結果。
image.png

アイコン付2択
If MsgBox("やっていい?", vbYesNo + vbDefaultButton2 + vbExclamation) = vbNo Then
    'いいえを押した時の処理。
End If

image.png

やり方(3択)

Dim msg_ As String
msg_ = "やっていい?" & vbCrLf
msg_ = msg_ & vbCrLf
msg_ = msg_ & "はい = はいを選択するとこう動くよ" & vbCrLf
msg_ = msg_ & "いいえ = いいえを選択するとこう動くよ" & vbCrLf
msg_ = msg_ & "キャンセル = キャンセルを選択するとこう動くよ"

Select Case MsgBox(msg_, vbYesNoCancel + vbDefaultButton3)
    Case vbYes
        'はい動作。
    Case vbNo
        'いいえ動作。
    Case vbCancel
        'キャンセル動作。
    Case Else
        '想定外(例外)
End Select
  • vbYesNoCancel で『はい』『いいえ』『キャンセル』の3択にできます。
  • 『いいえ』『キャンセル』の動作の違いが分からない、ということがよくあるので補足を入れておくと良いです。
  • Case文を使うと選択結果を保持する変数を用意しなくて済みます。
    ただし、Caseで分岐する各動作のコードが短い場合のみにしておいた方がおススメ。
  • ダイアログに表示する文字列が長くなることが多いので、変数に切り出しておくことがおススメ。

実行結果。
image.png

経過報告的な使い方はやめた方がよいです

ボタンを押した時に2つの処理を行う場合…

  1. ボタンを押す。
  2. 最初の処理。
  3. 最初の処理がおわったよというメッセージボックス。
  4. 次の処理。
  5. 次の処理がおわったよというメッセージボックス。

という形にすると、『最初の処理がおわったよ』というメッセージボックスのOKボタンを クリックするまで次の処理が行われません。
いつ出てくるか分からないメッセージボックスのために ユーザーがずっと画面の前に張り付く必要 が出てきてしまい、非効率になります。

とくに各処理に比較的時間がかかる場合、全ての処理が終わった段階でメッセージボックスを出した方がよいです。

参考サイトさん

バージョン

Microsoft Windows [Version 10.0.19045.3271]
Microsoft Access for Microsoft 365 MSO (バージョン 2307 ビルド 16.0.16626.20110) 32 ビット

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0