- Home ›
- Excel VBA入門 ›
- ダイアログ ›
- HERE
ボタンの種類
それではダイアログに表示するボタンの種類の指定方法について見ていきます。単にメッセージや注意を表示したいのであればダイアログを閉じるための「OK」ボタンが1つあればいいですが、ファイル削除の確認などの確認を取るためのものであれば「はい」や「いいえ」などのボタンが必要となります。
どのようなボタンがあるダイアログにするかは既にVBAで定義されています。
定義済み定数 | 実際の値 | 説明 |
---|---|---|
vbOKOnly | 0 | 「OK」ボタン |
vbOKCancel | 1 | 「OK」、「キャンセル」ボタン |
vbAbortRetryIgnore | 2 | 「中止」、「再試行」、「無視」 |
vbYesNoCancel | 3 | 「はい」、「いいえ」、「キャンセル」 |
vbYesNo | 4 | 「はい」、「いいえ」 |
vbRetryCancel | 5 | 「再試行」、「キャンセル」 |
定義済み定数のどれかの値を「MsgBox」関数を呼び出す時の2番目の引数に指定します。
「vbOKOnly」以外を選択した場合はボタンが2つ以上ありますので、どのボタンが押されたかを判定する必要があります。帰ってくる値はInteger型の値として取得でき、それぞれのボタンを押した場合に帰ってくる値の一覧は次の通りです。
定義済み定数 | 実際の値 | 説明 |
---|---|---|
vbOK | 1 | 「OK」ボタン |
vbCancel | 2 | 「キャンセル」ボタン |
vbAbort | 3 | 「中止」ボタン |
vbRetry | 4 | 「再試行」ボタン |
vbIgnore | 5 | 「無視」ボタン |
vbYes | 6 | 「はい」ボタン |
vbNo | 7 | 「いいえ」ボタン |
例えば「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
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 )