【VBA道場】#18  メッセージボックスの表示

ExcelVBA

【VBA道場】#18  メッセージボックスの表示



問題

「実行しますか?」というメッセージを表示し、「はい」が押された場合は「処理を開始します」というメッセージを表示、「いいえ」が押された場合は「中止しました」というメッセージを表示せよ。

 

完成見本

解答

Sub vba_doujyou_18()

’もし、メッセージボックスで「YES」が選択されたら
If MsgBox("実行しますか?", vbYesNo) = vbYes Then
    MsgBox "処理を開始します"     ’「処理を開始します」とメッセージボックスで表示
Else      ’そうでなければ
    MsgBox "中止しました"       ’「中止しました」とメッセージボックスで表示
End If

End Sub

サンプルファイル(マクロ有)

今回のマクロはこちらからダウンロードしてご使用いただけます。

 

解説

MsgBox(メッセージとして表示する文字列,ボタンの種類)
※ボタンの種類は省略可

画面にメッセージを表示するときは、MsgBox関数を使います。

MsgBox "処理を開始します"

MsgBoxの後ろにダブルクォーテーションで囲った文字を書くことで、その文字が表示されます。

 

 

では、ユーザーに選択させる場合はどうすればいいでしょうか?

この場合、MsgBoxでボタンの種類を指定してあげる必要があります。

 

MsgBox("実行しますか?", vbYesNo) 

今回は、「vbYesNo」を指定しました。

 

他にも下記のようなボタンを作成することができます。

変数 内容
vbOKOnly 「OK」
vbOKCancel 「OK」「キャンセル」
vbAbortRetryIgnore 「中止」「再試行」「無視」
vbYesNoCancel 「はい」「いいえ」「キャンセル」
vbYesNo 「はい」「いいえ」
vbRetryCancel 「再試行」「キャンセル」

 

MsgBox "処理を開始します", vbOKOnly

 

MsgBox "処理を開始しますか?", vbOKCancel

 

MsgBox "処理を開始しますか?", vbAbortRetryIgnore

 

MsgBox "処理を開始しますか?", vbYesNoCancel

 

MsgBox "処理を開始しますか?", vbYesNo

 

MsgBox "処理を開始しますか?", vbRetryCancel

 

続いて、ユーザーが選択した結果を使うにはどうしたらいいのでしょうか?

 

If MsgBox("実行しますか?", vbYesNo) = vbYes Then

結果を返す場合は必ずMsgBoxの後を「()」で囲みます。
MsgBox関数では戻り値を使用する場合に引数を「()」で囲まなければいけないという決まりがあります。

 

では、戻り値を使用して、条件判定を行っていきます。

If MsgBox("実行しますか?", vbYesNo) = vbYes Then  
→ メッセージで「はい」が選択された場合

    MsgBox "処理を開始します"
Else
    MsgBox "中止しました"

End If

 

おわりに

今回はメッセージボックスを表示させてみました!
メッセージボックスを使ってユーザーとの対話を可能にすると、プログラムの幅が一気に広がります。

是非マスターしましょう。
今日はここまで!

 

おすすめ参考書

Amazon

たった1秒で仕事が片付くExcel自動化の教科書

いちばんやさしいExcelVBAの教本

ExcelVBA逆引き辞典 パーフェクト

楽天

いちばんやさしいExcel VBAの教本

 

スラスラ読めるExcelVBA ふりがなプログラミング

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

スラスラ読めるExcel VBAふりがなプログラミング [ リブロワークス ]
価格:2035円(税込、送料無料) (2021/4/22時点)

楽天で購入

 

 

VBA逆引き大辞典

 

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

Excel VBA逆引き辞典パーフェクト第3版 [ 田中亨 ]
価格:2838円(税込、送料無料) (2021/4/22時点)

楽天で購入

 

 

タイトルとURLをコピーしました