前回までに、何度かメッセージボックスの使い方をご紹介してきました(詳細は目次 をご覧ください)。
通常、メッセージボックスには、[OK]ボタンが表示されますが、これを他のボタンに変更する技です。
【マクロ】
Sub MSGBOX_Buttons_例()
'選択ボタン付きのメッセージ表示
Dim myMessage As String 'メッセージの内容
Dim myTitle As String 'タイトル
Dim myStyle As String 'ボタン
Dim myAnswer As String '回答
'変数の設定
myMessage = "メッセージ"
myTitle = "タイトル"
myStyle = vbYesNo Or vbQuestion
myAnswer = MsgBox(prompt:=myMessage, Title:=myTitle, Buttons:=myStyle)
'場合分け(myAnserの内容で、実行内容を変更)
Select Case myAnswer
Case vbYes
'[はい(Y)]を選択したときの実行内容
Case vbNo
'[いいえ(N)]を選択したときの実行内容
End Select
End Sub
【解説】
上記で青文字で書いたとおり、前回の記事 にてアイコンを設定した項目に、ボタンの設定も同時に行ます。
このような表示になります。
myStyle = vbYesNo Or vbQuestion
このとおりですよね。
YesとNoのボタンがあって、Qestionのアイコンが表示される。
また、赤文字で書いた部分も重要なポイントですね。
上記の通り、[はい(Y)]と[いいえ(N)]を選択することにしていますので、その選択結果によって実行内容を変更する仕掛けです。
myAnswerという変数に、メッセージボックスで回答した値を代入しています。
そして、このmyAnswerの値で、処理を変更しています。
このような仕掛けのことを条件分岐とよびますが、プログラミングで大変重要な部分ですね。
また、この条件分岐を学ぶと、プログラミングが楽しくなってきますね。
条件分岐については、5月25日(土)の第6回ワードマクロ勉強会 in 名古屋 で取り上げますので、ご興味があるかたはご参加ください。
なお、上記の条件分岐の書き方については、今は、「こんなものか」とご理解ください。
【マクロ例】
Sub MSGBOX_Buttons_2()
'ボタン付きのメッセージ表示
Dim myMessage As String 'メッセージの内容
Dim myTitle As String 'タイトル
Dim myStyle As String 'ボタン
Dim myAnswer As String '回答
'変数の設定
myMessage = "今、お仕事中ですか?"
myTitle = "あいさつのしかた"
myStyle = vbYesNo Or vbQuestion
myAnswer = MsgBox(prompt:=myMessage, Title:=myTitle, Buttons:=myStyle)
'場合分け(myAnserの内容で、実行内容を変更)
Select Case myAnswer
Case vbYes
MsgBox "その仕事に役立ちそうなマクロあるけど、5分だけ試してみる?"
Case vbNo
MsgBox "ほら、このマクロ、ちょっとヤバイかも。試してみる?"
End Select
End Sub
【解説】
質問への回答により、表示するメッセージを変更します。
[はい(Y)]の場合
[いいえ(N)]の場合
マクロの自慢をしたいだけでした(笑)。
関連記事
第6回ワードマクロ勉強会 in 名古屋 (条件分岐を題材にします)
マクロコードの登録方法 (上記マクロをワードで実行する方法です)