【VBA道場】#18 メッセージボックスの表示
問題
「実行しますか?」というメッセージを表示し、「はい」が押された場合は「処理を開始します」というメッセージを表示、「いいえ」が押された場合は「中止しました」というメッセージを表示せよ。
完成見本
解答
Sub vba_doujyou_18()
’もし、メッセージボックスで「YES」が選択されたら
If MsgBox("実行しますか?", vbYesNo) = vbYes Then
MsgBox "処理を開始します" ’「処理を開始します」とメッセージボックスで表示
Else ’そうでなければ
MsgBox "中止しました" ’「中止しました」とメッセージボックスで表示
End If
End Sub
サンプルファイル(マクロ有)
今回のマクロはこちらからダウンロードしてご使用いただけます。
VBA道場18 サンプルファイル(マクロ有)
1 ファイル 13.11 KB
解説
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 ふりがなプログラミング
|
VBA逆引き大辞典
|