メッセージボックスの戻り値

マクロ講座18回 
MsgBox関数の戻り値を利用する

MsgBox関数には戻り値があり、戻り値を変数に格納し判定しましょう。

Excel 2013 マクロ講座

 メッセージボックスの戻り値を取得

前回では、[はい] ボタンと [いいえ] ボタンを表示する、vbYesNo
[OK] ボタンと [キャンセル] ボタンを表示する、vbOKCancelを使ったメッセージボックスを表示するコードを作成しました。
ところで、ユーザーがメッセージボックス上でどのボタンを押したかを判定するにはどうすればいいでしょうか?

MsgBox関数には戻り値があり、「メッセージボックス上でユーザーが押したボタン」返します。
この戻り値を変数に格納し、判定することで、ユーザーが押したボタンに応じた処理ができます。
(サンプルファイルは、こちらから 2013マクロ講座18回サンプルデータ

ユーザーの押したボタンを変数にする

MsgBox関数の戻り値は次のようになります。

では、コードを考えてみましょう。
戻り値を変数に格納するので、例では、名前をModoriとつけましょう。
戻り値は整数ですから、Integerを宣言します。


Sub 継続確認()

  Dim Modori As Integer
  
  Modori = MsgBox("処理を続けますか?", vbYesNo + vbExclamation, "継続確認")
  If Modori = vbNo Then
    Exit Sub
    
  End If
  MsgBox "処理を続けました。", vbOKOnly, "処理続行"
  
End Sub    
    
Dim Modori As Integer
Modoriは、メッセージボックスの[はい]、[いいえ]の値ですから、
vbYesNo
さらに、アイコンを表示するので、
+ vbExclamation
タイトルに"継続確認"と入れましょう。

Modori = MsgBox("処理を続けますか?", vbYesNo + _
  vbExclamation, "継続確認")
If Modori = vbNo Then
Exit Sub

End If
MsgBox "処理を続けました。", vbOKOnly, "処理続行"

If Modori = vbNo Then
Exit Sub

いいえが押されると、Exit文が実行されて終了します。

End If
MsgBox "処理を続けました。", vbOKOnly, "処理続行"

そうでない時は、メッセージボックスを、OKボタンオンリー、タイトル処理続行で表示します。

アイコンを表示

今度は、vbQuestion 問い合わせメッセージ アイコンを表示します。
内容という変数を宣言しています。
内容は、MsgBoxの戻り値です。

Sub セルの内容表示()

  Dim 内容 As Integer
  
  内容 = MsgBox("セルの中身を表示しますか?", _
    vbOKCancel + vbQuestion, "セルの値表示")
  If 内容 = vbOK Then
    MsgBox ActiveCell.Value
  End If
  
End Sub
    

実行すると、メッセージボックスに
セルの中身を表示しますか?というメッセージが表示されます。


OKをクリックすると、
メッセージボックスにアクティブセルの内容が表示されます。


キャンセルをクリックすると、終了します。