ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
テンプレート
テンプレートがありません。
この記事の要点
- Excel VBA の MsgBox で 3 択ボタンを出すには
vbYesNoCancel定数を指定 - 構文:
MsgBox("メッセージ", vbYesNoCancel + vbQuestion, "タイトル") - 戻り値は
vbYes/vbNo/vbCancel。変数で受けて Select Case で分岐するのが定石 - アイコンは
vbQuestion(?)/vbExclamation(!)/vbCritical(×)/vbInformation(i)を加算 - 3 ボタンでは足りない場合は UserForm でカスタムダイアログを自作する
1基本構文
Excel VBA の MsgBox 関数で「はい / いいえ / キャンセル」3 ボタンを表示し、ユーザーの選択に応じて処理を分岐する基本パターンです。
Sub Confirm3Buttons()
Dim ret As VbMsgBoxResult
ret = MsgBox("保存しますか?", vbYesNoCancel + vbQuestion, "確認")
Select Case ret
Case vbYes
MsgBox "「はい」が押されました(保存処理を実行)", vbInformation
' ここに保存処理を書く
ThisWorkbook.Save
Case vbNo
MsgBox "「いいえ」が押されました(保存せず続行)", vbInformation
' 保存しないで続行
Case vbCancel
MsgBox "「キャンセル」が押されました(処理中断)", vbInformation
Exit Sub
End Select
End Sub
2MsgBox のボタン定数一覧
| 定数 | 値 | 表示されるボタン |
|---|---|---|
vbOKOnly | 0 | OK |
vbOKCancel | 1 | OK / キャンセル |
vbAbortRetryIgnore | 2 | 中止 / 再試行 / 無視 |
vbYesNoCancel | 3 | はい / いいえ / キャンセル |
vbYesNo | 4 | はい / いいえ |
vbRetryCancel | 5 | 再試行 / キャンセル |
3戻り値の一覧
| 定数 | 値 | ユーザーの選択 |
|---|---|---|
vbOK | 1 | OK |
vbCancel | 2 | キャンセル |
vbAbort | 3 | 中止 |
vbRetry | 4 | 再試行 |
vbIgnore | 5 | 無視 |
vbYes | 6 | はい |
vbNo | 7 | いいえ |
4アイコンの指定
ボタン定数にアイコン定数を加算することで、メッセージの種類を視覚的に伝えられます:
' クエスチョン(質問)
MsgBox "削除してよろしいですか?", vbYesNo + vbQuestion, "確認"
' 警告(黄色三角)
MsgBox "ファイルが大きすぎます", vbOKOnly + vbExclamation, "警告"
' エラー(赤丸×)
MsgBox "保存に失敗しました", vbOKOnly + vbCritical, "エラー"
' 情報(青 i)
MsgBox "処理が完了しました", vbOKOnly + vbInformation, "情報"
' デフォルトボタンを指定(vbDefaultButton2 = 第 2 ボタンが既定)
MsgBox "本当に削除?", vbYesNo + vbQuestion + vbDefaultButton2, "確認"
5If / ElseIf による分岐(簡易版)
分岐が 2 通りだけなら If でも十分です:
Sub ConfirmYesNo()
If MsgBox("削除しますか?", vbYesNo + vbQuestion, "確認") = vbYes Then
' 削除処理
Range("A1:A10").ClearContents
MsgBox "削除しました", vbInformation
Else
MsgBox "キャンセルされました", vbInformation
End If
End Sub
6実用例: ファイル上書き確認
Sub SaveWithConfirm()
Dim filePath As String
filePath = "C:\Work\report.xlsx"
If Dir(filePath) <> "" Then
Dim ret As VbMsgBoxResult
ret = MsgBox(filePath & " は既に存在します。" & vbCrLf & _
"上書きしますか?", _
vbYesNoCancel + vbExclamation, _
"上書き確認")
Select Case ret
Case vbYes
Application.DisplayAlerts = False
ThisWorkbook.SaveAs filePath
Application.DisplayAlerts = True
MsgBox "上書き保存しました", vbInformation
Case vbNo
' 別名で保存
Dim newPath As Variant
newPath = Application.GetSaveAsFilename( _
InitialFileName:="report_new.xlsx", _
FileFilter:="Excel ファイル (*.xlsx), *.xlsx")
If newPath <> False Then
ThisWorkbook.SaveAs newPath
End If
Case vbCancel
Exit Sub
End Select
Else
ThisWorkbook.SaveAs filePath
End If
End Sub
7UserForm でカスタムダイアログ
MsgBox の 3 ボタンでは足りない(ボタンを 4 個以上、ラベルを自由に変えたい)場合は、UserForm を作って自前のダイアログを構築します:
- VBE で「挿入」→「ユーザーフォーム」
- ツールボックスから CommandButton を必要数配置し、Caption を「保存」「保存せず終了」「キャンセル」等に変更
- 各ボタンの Click イベントに分岐コードを記述
UserForm1.Showで表示
' UserForm1 のコード
Public UserChoice As String
Private Sub CommandButton1_Click() ' 保存
UserChoice = "save"
Me.Hide
End Sub
Private Sub CommandButton2_Click() ' 保存せず終了
UserChoice = "discard"
Me.Hide
End Sub
Private Sub CommandButton3_Click() ' キャンセル
UserChoice = "cancel"
Me.Hide
End Sub
' 標準モジュール側
Sub ShowCustomDialog()
UserForm1.Show
Select Case UserForm1.UserChoice
Case "save": ThisWorkbook.Save
Case "discard": ThisWorkbook.Close SaveChanges:=False
Case "cancel": Exit Sub
End Select
Unload UserForm1
End Sub
8よくあるトラブル
| 症状 | 原因 | 対処 |
|---|---|---|
| 常に vbYes 判定になる | 戻り値を受けていない | ret = MsgBox(...) と変数に代入 |
| ×ボタンで閉じられると意図せぬ分岐 | ×は vbCancel と同じ | vbCancel の Case で適切に処理 |
| 改行が入らない | "\n" は VBA では使えない | vbCrLf / vbNewLine を使う |
| 長い文字列で行継続できない | 1 行が長すぎる | 末尾に _(半角スペース + アンダースコア) |
9FAQ
Q: MsgBox の×ボタンを無効化したい
A: MsgBox では不可能。UserForm で QueryClose イベントを使って閉じる操作を抑制してください。
Q: ボタンのラベルを「保存」「破棄」のように日本語にしたい
A: MsgBox では固定。UserForm で CommandButton を配置し Caption を変更してください。
Q: 一定時間で自動的に閉じたい
A: WScript.Shell の Popup メソッドにタイムアウト引数を渡せます。例: CreateObject("WScript.Shell").Popup "msg", 5, "title", vbYesNoCancel
10📸 参考画像
※ 旧バージョンから引き継いだ参考画像です。手順・図解の補助としてご覧ください。

ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
テンプレート
テンプレートがありません。
子ページはありません
- RevitAPI.dll と RevitAPIUI.dll の参照
- マニフェストファイルの書き方
- アドインの追加/設置方法
- アドインの作成サンプル(外部ツール編)
- アドインの作成サンプル(外部アプリケーション編)
- 要素の取得と情報の表示
- 要素のカテゴリとマテリアルの取得と表示
- よく使うBuiltInCategoryの一覧
- 外部ツールでAutodesk.Revit.Documentを取得する方法
- エラーメッセージの設定方法
- 「はい」、「いいえ」、「キャンセル」ボタンの設置と処理分岐
- 要素(カテゴリ、ファミリ、タイプ)とは
- ElementIdとUniqueIdの違い
- 要素フィルターの使い方
- 要素のパラメータ一覧の取得
- pyRevitの導入と簡単なアプリケーションの作成
- Revit SDKのサンプルの場所とビルド方法
- FamilySymbol(タイプ)の取得とパラメータの変更
- 相対パスでdllにアイコン画像を埋め込む方法
- 「グループ」について
人気ページ
- 1 【Revit API】アドインの作成サンプル(外部ツール編)
- 2 【Revit API】要素の取得とID、名前、タイプの情報表示
- 3 Revit の要素(Category / Family / Type / Instance)4 階層モデルとは
- 4 【PythonでRevit API】pyRevitの導入と簡単なアプリケーションの作成
- 5 ArchiCAD 階段と手摺りの作成手順|階段ツール / 設定画面 / 手摺り追加
- 6 【Revit API】アドインの作成サンプル(外部アプリケーション編)
- 7 【Revit API】FamilySymbol(タイプ)の取得とパラメータの変更
- 8 RevitAPI.dll と RevitAPIUI.dll の参照
- 9 【Revit API】特定の要素のパラメータ一覧の取得
- 10 【Revit API】マニフェストファイルの書き方/作成方法
最近更新/作成されたページ
- 建築・BIM 総合Wiki — 建築の基礎からBIM・Revit・Speckleまで体系的に解説 2026-09-07 22:56:20
- ARCHICAD 交点矢印の自動配置完全ガイド (Intelligent References) 2026-09-07 22:55:03
- ARCHICAD (BIM ソフト) 完全ガイド 2026-09-07 22:55:03
- ARCHICAD でフロア(階)を切り替える方法(ポップアップナビゲータ / プロジェクト一覧 / ショートカット) 2026-09-07 22:55:03
- ARCHICAD で通り芯を追加する方法|グリッドツールと命名規則 2026-09-07 22:55:03
- ARCHICAD 壁の作成方法完全ガイド 2026-09-07 22:55:03
- ArchiCAD 階段と手摺りの作成手順|階段ツール / 設定画面 / 手摺り追加 2026-09-07 22:55:03
- ARCHICAD で床(スラブ)を作る方法|ポリゴン入力と複合構造 2026-09-07 22:55:03
- ARCHICAD ドア (Door) の作成完全ガイド 2026-09-07 22:55:03
- ARCHICAD 梁 (Beam) の作り方完全ガイド 2026-09-07 22:55:03
- ARCHICADの3D表示方法|F5ショートカット・軸測投影と透視投影の切替 2026-09-07 22:55:03
- ARCHICAD 窓の作成完全ガイド 2026-09-07 22:55:03
- ARCHICAD Column ツールで柱を配置する手順(断面・高さ・複合構造・3D 確認) 2026-09-07 22:55:03
- ARCHICAD 参照線の移動・削除・編集ガイド(Reference Line) 2026-09-07 22:55:03
- 【PythonでRevit API】pyRevitの導入と簡単なアプリケーションの作成 2026-09-07 03:02:40
コメントを削除してもよろしいでしょうか?