【VBA】メッセージボックスのボタン操作で処理を分岐する | あじゅWeb

【VBA】メッセージボックスのボタン操作で処理を分岐する

エクセルVBAで使用するコードの備忘録。VBAでメッセージボックスを表示し、ユーザーのボタン操作の内容によって処理を分岐する場合のサンプルコード。メッセージボックスを表示するコードの詳細についてはこちらをご覧ください。

スポンサーリンク

MsgBox関数の戻り値

メッセージボックスを表示するMsgBox関数は、戻り値としてユーザーがクリックしたボタンの種類を返します。下記の表では押されたボタンと戻り値の関係をまとめてあります。戻り値が0の場合である「何もボタンがおされなかった」場合とは、メッセージボックス右上の「X」ボタンがクリックされて閉じられた場合などが該当します。

定数説明
なし0なにも押されなかった場合
vbOK1「OK」ボタン
vbCancel2「キャンセル」ボタン
vbAbort3「中止」ボタン
vbRetry4「再試行」ボタン
vbIgnore5「無視」ボタン
vbYes6「はい」ボタン
vbNo7「いいえ」ボタン

サンプルコード

下記のサンプルコードでは、Select文を使ってMsgBox関数の戻り値により処理を分岐するようにしてあります(実際の各分岐後の処理は省略してあります)。すべてのボタン操作に対応できるように記載してありますので、実際に使用する際には表示してあるボタンの処理部分以外は削除してください。

なお、コードを使用する際はカッコに囲まれた部分([***])を自分のプログラムに合わせて変更してください。

Public Sub MsgboxTest()
    
    '--- MsgBoxの戻り値 ---'
    Dim msgbox_ret As Long
    
    '--- 引数の設定 ---'
    Dim title_str As String
    Dim message_str As String
    Dim button_long As Long
    Dim icon_long As Long
    title_str = "[タイトル]"
    message_str = "[メッセージ]"
    button_long = [ボタン定数]
    icon_long = [アイコン定数]
    
    '--- メッセージボックスを表示 ---'
    msgbox_ret = MsgBox(message_str, button_long + icon_long, title_str)
    
    '--- ボタン操作による処理の分岐 ---'
    Select Case msgbox_ret
        Case 0
            '何もボタンが押されなかった場合
        Case vbOK
            '「OK」ボタン
            
        Case vbCancel
            '「キャンセル」ボタン

        Case vbAbort
            '「中止」ボタン
            
        Case vbRetry
            '「再試行」ボタン
            
        Case vbIgnore
            '「無視」ボタン
            
        Case vbYes
            '「はい」ボタン
            
        Case vbNo
            '「いいえ」ボタン
            
        Case Else
            '「それ以外」ボタン
            
    End Select
    
End Sub