メッセージボックスのボタンを変更する

2011年2月24日

前回までに、何度かメッセージボックスの使い方をご紹介してきました(詳細は目次 をご覧ください)。

通常、メッセージボックスには、[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 名古屋 (条件分岐を題材にします)

マクロコードの登録方法  (上記マクロをワードで実行する方法です)

-Word, コード
-