ボタンの種類

広告

それではダイアログに表示するボタンの種類の指定方法について見ていきます。単にメッセージや注意を表示したいのであればダイアログを閉じるための「OK」ボタンが1つあればいいですが、ファイル削除の確認などの確認を取るためのものであれば「はい」や「いいえ」などのボタンが必要となります。

どのようなボタンがあるダイアログにするかは既に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

testdialog2.bas

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

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

ダイアログテスト

vbYesNoCancel

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

ダイアログテスト

vbYesNo

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

ダイアログテスト

vbRetryCancel

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

ダイアログテスト

( Written by Tatsuo Ikura )