Excel VBAの確認ダイアログで処理を中断させる方法のまとめ
Excel VBAの確認ダイアログで処理を中断させる方法をまとめました。
このエントリーでは、次のようなダイアログで処理を中断できる方法を紹介します。
1.問題点
Excel VBAでダイアログを表示するにはMsgBoxを利用します。
MsgBox("実行します")
実行結果
ただしこれでは「OK」を表示するだけのダイアログなので、処理を中断することはできません。
が、JavaScriptのような処理を中断できるダイアログを表示させる方法が分かりません。
2.ダイアログで処理を中断させる
ダイアログで処理を中断させるには、まずMsgBoxを次のフォーマットで記述します。
MsgBox(ダイアログに表示する文字列, 表示するボタンの種類)
第1パラメータに表示する文字列、第2パラメータにボタンの種類を設定します。
サンプルとしてここでは次のように設定します(詳細は後述)。
MsgBox("実行しますか?", vbYesNo)
これで「はい」「いいえ」の2つのボタンが表示されます。
サンプルの実行結果
そしてMsgBoxのボタンのクリック結果をIf文で判定し、判定後にExitなどを行えば、ダイアログで処理を中断させることができます。
If MsgBox("実行しますか?", vbYesNo) = vbNo Then
Exit Sub
End If
次項から表示ボタンの種類やアイコン・タイトルの表示方法について紹介します。
3.ボタンの種類と判定方法
MsgBoxで表示できるボタンは「はい」「いいえ」以外にも色々用意されています。
第2パラメータに設定する値と、対応するボタンの表示は次のようになります。
vbYesNo(はい・いいえを表示)
vbOKCancel(OK・キャンセルを表示)
vbYesNoCancel(はい・いいえ・キャンセル表示)
vbRetryCancel(再試行・キャンセルを表示)
vbAbortRetryIgnore(中止・再試行・無視を表示)
また、上記のボタンの判定方法は次のとおりです。
- 「はい」であることを判定:vbYes
- 「いいえ」であることを判定:vbNo
- 「キャンセル」であることを判定:vbCancel
- 「再試行」であることを判定:vbRetry
- 「中止」であることを判定:vbAbort
- 「無視」であることを判定:vbIgnore
4.ダイアログにアイコンを表示する
ダイアログにアイコンを表示するには、第2パラメータに文字列を連結する形式で記述します。
MsgBox("実行しますか?", vbQuestion + vbYesNo)
アイコンの主な種類は次のとおりです。
vbQuestion(問い合わせ)
vbExclamation(注意)
vbInformation(情報)
上記の他、vbCriticalもあります。
5.任意のボタンを選択された状態にする
4項までのサンプルでは、いずれも一番左のボタンが選択された状態になっています。
任意のボタンを選択された状態にするには、第2パラメータに「vbDefaultButtonX(Xはボタンの番号)」を追加します。
たとえば、2つめのボタンを選択された状態にするには「vbDefaultButton2」を追加します。
MsgBox("実行しますか?", vbDefaultButton2 + vbYesNo)
これで次のように、「いいえ」が選択された状態で表示されます。
アイコンも加えるのであれば、すべてを文字列連結で記述します。
MsgBox("実行しますか?", vbQuestion + vbDefaultButton2 + vbYesNo)
6.ダイアログのタイトルを表示する
ダイアログのタイトルを表示するには、MsgBoxの第3パラメータに設定します。
MsgBox("実行しますか?", vbYesNo, "確認")
これで次のように、タイトルバーに「確認」が表示されます。