やり方(メッセージとOKボタンのみ)
MsgBox "おわったよ。"
やり方(メッセージの左にアイコン付)
MsgBox "!マーク", vbExclamation
MsgBox "×マーク", vbCritical
MsgBox "?マーク", vbQuestionMsgBox
MsgBox "iマーク", vbInformation
やり方(2択)
If MsgBox("やっていい?", vbYesNo + vbDefaultButton2) = vbNo Then
'いいえを押した時の処理。
End If
-
vbYesNo
によって『はい』『いいえ』の2択にできます。 -
vbDefaultButton2
によってデフォルト選択を 左から2番目のボタン に指定できます。
アイコン付2択
If MsgBox("やっていい?", vbYesNo + vbDefaultButton2 + vbExclamation) = vbNo Then
'いいえを押した時の処理。
End If
やり方(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で分岐する各動作のコードが短い場合のみにしておいた方がおススメ。 - ダイアログに表示する文字列が長くなることが多いので、変数に切り出しておくことがおススメ。
経過報告的な使い方はやめた方がよいです
ボタンを押した時に2つの処理を行う場合…
- ボタンを押す。
- 最初の処理。
- 最初の処理がおわったよというメッセージボックス。
- 次の処理。
- 次の処理がおわったよというメッセージボックス。
という形にすると、『最初の処理がおわったよ』というメッセージボックスのOKボタンを クリックするまで次の処理が行われません。
いつ出てくるか分からないメッセージボックスのために ユーザーがずっと画面の前に張り付く必要 が出てきてしまい、非効率になります。
とくに各処理に比較的時間がかかる場合、全ての処理が終わった段階でメッセージボックスを出した方がよいです。
参考サイトさん
バージョン
Microsoft Windows [Version 10.0.19045.3271]
Microsoft Access for Microsoft 365 MSO (バージョン 2307 ビルド 16.0.16626.20110) 32 ビット