ダイアログに表示するボタンの種類

ダイアログではあらかじめ決められた種類の中から使用するボタンの種類を選択することができます。単にメッセージや注意を表示する場合はダイアログを閉じるための「OK」ボタンが1つあればいいですが、ファイル削除の確認などの確認を取るためのものであれば「はい」や「いいえ」などのボタンが必要となります。ここでは Excel VBA でダイアログに表示するボタンの種類を選択する方法について解説します。

(2022 年 06 月 14 日公開 / 2022 年 06 月 14 日更新)

ダイアログに表示するボタンの種類

どのようなボタンがあるダイアログにするかは既にVBAで定義されています。

定義済み定数実際の値説明
vbOKOnly0「OK」ボタン
vbOKCancel1「OK」、「キャンセル」ボタン
vbAbortRetryIgnore2「中止」、「再試行」、「無視」
vbYesNoCancel3「はい」、「いいえ」、「キャンセル」
vbYesNo4「はい」、「いいえ」
vbRetryCancel5「再試行」、「キャンセル」

定義済み定数のどれかの値を「MsgBox」関数を呼び出す時の2番目の引数に指定します。

「vbOKOnly」以外を選択した場合はボタンが2つ以上ありますので、どのボタンが押されたかを判定する必要があります。帰ってくる値はInteger型の値として取得でき、それぞれのボタンを押した場合に帰ってくる値の一覧は次の通りです。

定義済み定数実際の値説明
vbOK1「OK」ボタン
vbCancel2「キャンセル」ボタン
vbAbort3「中止」ボタン
vbRetry4「再試行」ボタン
vbIgnore5「無視」ボタン
vbYes6「はい」ボタン
vbNo7「いいえ」ボタン

例えば「vbOKCancel」ボタンを使ったダイアログを表示した場合、ボタンは「OK」か「キャンセル」ですので、実際に使う場合には次のようになります。

Sub テスト()
    Dim ans As Integer

    ans = MsgBox("実行しますか?", vbOKCancel, "テスト")

    If ans = vbOK Then
        Range("A1").Value = "OKが押されました"
    Else
        Range("A1").Value = "キャンセルが押されました"
    End If
End Sub

では一通り試してみましょう。

vbOKCancel

最初は vbOKCancel です。「OK」ボタンと「キャンセル」ボタンを表示します。

Sub テスト()

    Dim ans As Integer

    ans = MsgBox("実行しますか?", vbOKCancel, "テスト")

    If ans = vbOK Then
        Range("A1").Value = "OKが押されました"
    Else
        Range("A1").Value = "キャンセルが押されました"
    End If

End Sub

上記のマクロを実行すると次のようになります。

ダイアログテスト

ここで「OK」ボタンを次のようになります。

ダイアログテスト

他のダイアログは画面表示だけ見てください。

vbAbortRetryIgnore

次は vbAbortRetryIgnore です。「中止」、「再試行」、「無視」ボタンを表示します。

Dim ans As Integer
ans = MsgBox("失敗しました。再度実行しますか?", vbAbortRetryIgnore, "テスト")

ダイアログテスト

vbYesNoCancel

次は vbYesNoCancel です。「はい」、「いいえ」、「キャンセル」ボタンを表示します。

Dim ans As Integer
ans = MsgBox("ファイルを削除します。宜しいですか?", vbYesNoCancel, "テスト")

ダイアログテスト

vbYesNo

次は vbYesNoCancel です。「はい」、「いいえ」ボタンを表示します。

Dim ans As Integer
ans = MsgBox("アプリケーションを終了します。宜しいですか?", vbYesNo, "テスト")

ダイアログテスト

vbRetryCancel

最後は vbYesNoCancel です。「再試行」、「キャンセル」ボタンを表示します。

Dim ans As Integer
ans = MsgBox("ファイルの読み込みに失敗しました", vbRetryCancel, "テスト")

ダイアログテスト

ダイアログを表示する目的にあわせてダイアログに表示するボタンを選択してください。

-- --

Excel VBA でダイアログに表示するボタンの種類を選択する方法について解説しました。

( Written by Tatsuo Ikura )

広告
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。