メッセージボックスではいといいえを選択させる方法

〇○しますか?と聞いて「はい」「いいえ」で処理を振り分けたいことありませんか

通常のVBAのメッセージ(MsgBox)ではOKしかないのですが、はいいいえを表示させてそれぞれ別の処理ができるようにしましょう。

目次

VBAメッセージ表示機能

メッセージで「はい」「いいえ」で処理を振り分ける

実際にはメッセージを表示して「はい」と「いいえ」で処理を振り分けることのできるメッセージを使うことが多いです。

「はい」「いいえ」で処理を振り分けるVBA

Private Sub CommandButton1_Click()
msg = MsgBox(“印刷しますか?”, Buttons:=vbYesNo)
If msg = vbYes Then
MsgBox”はいを押したね”
Else
MsgBox”いいえをおしたね”
End If
End Sub

解説
  1. コマンドボタン1をクリックしたら
  2. 「はい」「いいえ」を選択させるメッセージで「印刷しますか?」と表示する
  3. もし「はい」が押されたら
  4. 「はいを押したね」と表示する
  5. そうでなかったら(いいえを押したら)
  6. 「いいえをおしたね」と表示する
  7. IFステートメント終了
  8. マクロ記録終了

まあ、実際にこんな使い方はしませんが、「はい」を押したら「はいを押したね」って言われ、「いいえ」を押すと「いいえをおしたね」って答えてくれます。

はいといいえのメッセージボックス

メッセージボックスで使える表示

上記のButtons:=vbYesNoの部分は、ボタンの種類を指定しているので、ここでは「vbYesNo」としているので「はい」「いいえ」と表示されています。

「vbYesNo」部分を変更することで表示を変えることができます。

「はい」・「いいえ」

 

定数(vbYesNo)

はいといいえのメッセージボックス
「OK」・「キャンセル」

 

定数(vbOKCancel)

「再試行」・「キャンセル」

 

定数(vbRetryCancel)

「はい」・「いいえ」・「キャンセル」

 

定数(vbYesNoCancel)

メッセージにアイコンをつける

コードは下記の通りです。

MsgBox “印刷しますか?”, Buttons:=vbYesNo + vbInformation

一番右の+ vbInformationの部分を変更するとお好きなマークにできます。

警告アイコン

 

定数(vbCritical)

問い合わせアイコン

 

定数(vbQuestion)

注意アイコン

 

定数(vbExclamation)

情報アイコン

 

定数(vbInfomation)

ここでは、オリジナル入力フォームを作成して、配置したコマンドボタンにVBAコードを書いた例になっていますので、ユーザーフォームについては下記をご覧くださいませ。

メッセージのみ表示する

エクセルを使っている人に処理を選択させることの必要がなく、ただ単にメッセージだけを表示する場合は下記の通り記述するだけです。

メッセージ表示

Private Sub CommandButton1_Click()
MsgBox “メッセージ表示”
End Sub

解説
  1. コマンドボタン1がクリックされたら
  2. 「メッセージ表示」をする
  3. マクロ記録終了

これでユーザーフォーム(UserForm1)のコマンドボタン(CommandButton1)を押すと「メッセージ表示」という画面が表示されます。

メッセージボックス表示
OKボタンが押せるだけです。

画面が出たら、OKボタンが押せるだけなので、お知らせって感じですね。

ついでにと言ったらなんですが、メッセージは1行限定ってことはありません。

メッセージを2行・3行と改行して表示する

メッセージを改行して表示したいとあんまり思わないかな?でも可能なので書いてみました。

改行の方法は「1行目メッセージ」「2行目メッセージ」の間に【 & vbCrLf & 】を入れるだけですが、【&】の両サイドは半角スペースが空いていますよ!

メッセージ改行(2行)VBA

Private Sub CommandButton1_Click()
MsgBox “エクセルを学ぼう” & vbCrLf & “Excel-VBA”
End Sub

解説
  1. コマンドボタン1がクリックされたら
  2. 1行目に「エクセルを学ぼう」2行目に「Excel-VBA」と表示する
  3. マクロ記録終了
メッセージ改行(3行)VBA

Private Sub CommandButton1_Click()
MsgBox “エクセルを学ぼう” & vbCrLf & “Excel-VBA” & vbCrLf & “byとりっぷぼうる”
End Sub

解説
  1. コマンドボタン1がクリックされたら
  2. 1行目に「エクセルを学ぼう」2行目に「Excel-VBA」3行目に「byとりっぷぼうる」と表示する
  3. マクロ記録終了

とても簡単にできますので、遊び心で使ったら面白いかもしれませんね。

メッセージボックスの画面左上のタイトルを変更する

メッセージ本文以外に「Microsoft Excel」と常に表示されているタイトルも変更可能です。

基本的なメッセージの後に、【,,”タイトル”】を付け足すだけですよ!

とりっぷぼうる

本文「印刷しますか?」
タイトル「とりっぷぼうる」
このようにメッセージボックスに表示させるVBAコードは下記の通りです。

メッセージボックスのタイトルを変更するVBA

Private Sub CommandButton3_Click()
MsgBox “印刷しますか?”, , “とりっぷぼうる”
End Sub

とっても簡単でしょ!

ただし、「はい」「いいえ」の選択のメッセージではエラーになりました。

メッセージ機能を応用しよう

セルの値を反映させてメッセージを表示する

メッセージ機能の応用として、表示させるメッセージを臨機応変に変更したいと思いませんか?

セルの値を反映させて表示出来れば、順位が変化する成績トップの名前を表示することも可能になります。

工夫次第で自分好みのメッセージを表示させることも可能ですよ。

「はい」「いいえ」を選択しないと先へ進めない

このように「はい」「いいえ」で処理ができるようになったら、意図しない操作でユーザーフォームを閉じられたりしたら予定していた操作の流れが途絶えてしまいます。

それを防ぐには×ボタンを使えなくしてしまえば解決です!

そうすると、かならず「はい」「いいえ」を押さなければ次に進めなくなるので安心ですよ!

「はい」「いいえ」で処理を振り分けるIF~Then

もし~だったら○○、そうでなかったら××。

これをマスターしなくてはVBAを使いこなすことはできませんので、1つの条件や複数条件、答えも複数など、テストの5段階評価や重複チェックなど使い道はたくさんありますのでぜひマスターしてください。

CSVファイルからデート取込完了のお知らせ

コマンドボタンを押して記述したVBAコードに従って様々なプログラムを実行しますが、終了した時にメッセージで表示して、次の作業工程を知らせる機能としてメッセージを使ってみませんか?

目次