TOP

VBA-レッスン 10. ダイアログ ボックス (ダイアログ ボックス)

Excel VBA のダイアログ ボックス (ダイアログ ボックス) は、ユーザーに情報を表示するために使用されます。

MsgBox 関数は、ダイアログ ボックスにメッセージを表示し、ユーザーがボタンをクリックするのを待ち、ユーザーがどのボタンをクリックしたかを示す整数を返します。

最も一般的に使用されるダイアログはメッセージ ボックスですが、入力ボックスも使用できます。


MsgBox

これまで、画面に情報を表示するために MsgBox ダイアログ ボックスを使用してきました。

Sub delete_B2()
    Range("B2").ClearContents
    MsgBox "The contents of B2 have been deleted !"  '「セルB2の内容が削除されました!」
End Sub

この場合、MsgBox は引数を 1 つだけ指定して呼び出されます。見る以下のコード:

ここで、2 つの命令を実行する前に削除の確認を求めるダイアログ ボックスを作成します。次に、使用する引数が 3 つあります。

MsgBox([テキスト]、[ボタン]、[タイトル])
  • テキスト: ダイアログボックスのテキスト
  • Buttons: ボタンの選択 (はい、いいえ、キャンセルなど) + その他のオプション
  • タイトル: ダイアログボックスのタイトル
  • Sub delete_B2()
    
        If MsgBox("Are you sure that you wish to delete the contents of B2 ?", vbYesNo, "Confirm") = vbYes
        Then
          Range("B2").ClearContents
          MsgBox "The contents of B2 have been deleted !"
        End If
        
    End Sub
    

    結果:

    Private Sub warning(var_text As String)
        MsgBox "Caution : " & var_text & " !"
    End Sub
    
    Sub macro_test()
        If Range("A1") = "" Then
            warning "empty cell"           '「空のセル」
        ElseIf Not IsNumeric(Range("A1")) Then
            warning "non-numerical value"  '「数値以外の値」
        End If
    End Sub
    

    vbYesNo は、ダイアログ ボタンが「Yes」と「No」であることを指定し、vbYes は「Yes」ボタンを表します。

    If MsgBox("Text", vbYesNo, "Title") = vbYes Then ' "Yes" ボタンが押された場合...
    

    MsgBox の 2 番目の引数を使用するためのオプション

    絶え間ない 数値 説明
    vbOKOnly0ok - dialog boxes
    vbOKCancel1ok - dialog boxescancel - dialog boxes
    vbAbortRetryIgnore2abort - dialog boxesretry - dialog boxesignore - dialog boxes
    vbYesNoCancel3yes - dialog boxesno - dialog boxescancel - dialog boxes
    vbYesNo4yes - dialog boxesno - dialog boxes
    vbRetryCancel5retry - dialog boxescancel - dialog boxes
    vbCritical16critical - dialog boxes
    vbQuestion32question - dialog boxes
    vbExclamation48exclamation - dialog boxes
    vbInformation64information - dialog boxes

    MsgBox の 2 番目の引数の使用例

    ユーザーが Yes を押すまで、ループ内で毎回表示され続ける MsgBox の例を次に示します。

    Sub humor()
        Do
            If MsgBox("Do you like the Moonexcel site ?", vbYesNo, "Survey") = vbYes Then
                Exit Do '=> 応答 Yes = はい、ループを終了します
            End If
        Loop While 1 = 1 '=> 無限ループ
        MsgBox ";-)"
    End Sub
    

    新しいリボンを表示するには、引数 10 を指定してリボンを移動する Cul 関数を使用できます。次に例を示します。

    MsgBox "Example 1" & Chr(10) & "Example 2" & Chr(10) & Chr(10) & "Example 3"
    

    次の結果が得られます。

    入力ボックス

    InputBox は、ユーザーにダイアログ ボックスへの値の入力を求めます。次に例を示します。

    Sub example()
        Dim result As String
       
        result = InputBox("Text ?", "Title") '変数には、InputBox に入力された値が割り当てられます。
       
        If result <> "" Then '値が「」以外の場合、結果が表示されます
           MsgBox result
        End If
    End Sub
    

    次の結果が得られます。

    3 番目の引数はデフォルト値を設定するために使用できます。

    InputBox("Text ?", "Title", "Default value")
    

    結果は次のとおりです。