Excel VBAの確認ダイアログで処理を中断させる方法のまとめ

Excel VBAの確認ダイアログで処理を中断させる方法のまとめ

Posted at June 26,2014 1:23 AM
Tag:[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(はい・いいえを表示)
vbYesNoボタン

vbOKCancel(OK・キャンセルを表示)
vbOKCancelボタン

vbYesNoCancel(はい・いいえ・キャンセル表示)
vbYesNoCancelボタン

vbRetryCancel(再試行・キャンセルを表示)
vbRetryCancelボタン

vbAbortRetryIgnore(中止・再試行・無視を表示)
vbAbortRetryIgnoreボタン

また、上記のボタンの判定方法は次のとおりです。

  • 「はい」であることを判定:vbYes
  • 「いいえ」であることを判定:vbNo
  • 「キャンセル」であることを判定:vbCancel
  • 「再試行」であることを判定:vbRetry
  • 「中止」であることを判定:vbAbort
  • 「無視」であることを判定:vbIgnore

4.ダイアログにアイコンを表示する

ダイアログにアイコンを表示するには、第2パラメータに文字列を連結する形式で記述します。

MsgBox("実行しますか?", vbQuestion + vbYesNo)

アイコンの主な種類は次のとおりです。

vbQuestion(問い合わせ)
vbQuestionのアイコンを表示

vbExclamation(注意)
vbExclamationのアイコンを表示

vbInformation(情報)
vbInformationのアイコンを表示

上記の他、vbCriticalもあります。

5.任意のボタンを選択された状態にする

4項までのサンプルでは、いずれも一番左のボタンが選択された状態になっています。

任意のボタンを選択された状態にするには、第2パラメータに「vbDefaultButtonX(Xはボタンの番号)」を追加します。

たとえば、2つめのボタンを選択された状態にするには「vbDefaultButton2」を追加します。

MsgBox("実行しますか?", vbDefaultButton2 + vbYesNo)

これで次のように、「いいえ」が選択された状態で表示されます。

vbDefaultButton2を追加

アイコンも加えるのであれば、すべてを文字列連結で記述します。

MsgBox("実行しますか?", vbQuestion + vbDefaultButton2 + vbYesNo)

6.ダイアログのタイトルを表示する

ダイアログのタイトルを表示するには、MsgBoxの第3パラメータに設定します。

MsgBox("実行しますか?", vbYesNo, "確認")

これで次のように、タイトルバーに「確認」が表示されます。

ダイアログのタイトルを表示

関連記事
zenback
人気エントリー
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)