ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
基本構文
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
MsgBox のボタン定数一覧
| 定数 | 値 | 表示されるボタン |
|---|---|---|
vbOKOnly | 0 | OK |
vbOKCancel | 1 | OK / キャンセル |
vbAbortRetryIgnore | 2 | 中止 / 再試行 / 無視 |
vbYesNoCancel | 3 | はい / いいえ / キャンセル |
vbYesNo | 4 | はい / いいえ |
vbRetryCancel | 5 | 再試行 / キャンセル |
戻り値の一覧
| 定数 | 値 | ユーザーの選択 |
|---|---|---|
vbOK | 1 | OK |
vbCancel | 2 | キャンセル |
vbAbort | 3 | 中止 |
vbRetry | 4 | 再試行 |
vbIgnore | 5 | 無視 |
vbYes | 6 | はい |
vbNo | 7 | いいえ |
アイコンの指定
ボタン定数にアイコン定数を加算することで、メッセージの種類を視覚的に伝えられます:
' クエスチョン(質問)
MsgBox "削除してよろしいですか?", vbYesNo + vbQuestion, "確認"
' 警告(黄色三角)
MsgBox "ファイルが大きすぎます", vbOKOnly + vbExclamation, "警告"
' エラー(赤丸×)
MsgBox "保存に失敗しました", vbOKOnly + vbCritical, "エラー"
' 情報(青 i)
MsgBox "処理が完了しました", vbOKOnly + vbInformation, "情報"
' デフォルトボタンを指定(vbDefaultButton2 = 第 2 ボタンが既定)
MsgBox "本当に削除?", vbYesNo + vbQuestion + vbDefaultButton2, "確認"
If / ElseIf による分岐(簡易版)
分岐が 2 通りだけなら If でも十分です:
Sub ConfirmYesNo()
If MsgBox("削除しますか?", vbYesNo + vbQuestion, "確認") = vbYes Then
' 削除処理
Range("A1:A10").ClearContents
MsgBox "削除しました", vbInformation
Else
MsgBox "キャンセルされました", vbInformation
End If
End Sub
実用例: ファイル上書き確認
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
UserForm でカスタムダイアログ
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
よくあるトラブル
| 症状 | 原因 | 対処 |
|---|---|---|
| 常に vbYes 判定になる | 戻り値を受けていない | ret = MsgBox(...) と変数に代入 |
| ×ボタンで閉じられると意図せぬ分岐 | ×は vbCancel と同じ | vbCancel の Case で適切に処理 |
| 改行が入らない | "\n" は VBA では使えない | vbCrLf / vbNewLine を使う |
| 長い文字列で行継続できない | 1 行が長すぎる | 末尾に _(半角スペース + アンダースコア) |
FAQ
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
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
同階層のページ
- RevitAPI.dll と RevitAPIUI.dll の参照
- マニフェストファイルの書き方
- アドインの追加/設置方法
- アドインの作成サンプル(外部ツール編)
- アドインの作成サンプル(外部アプリケーション編)
- 要素の取得と情報の表示
- 要素のカテゴリとマテリアルの取得と表示
- よく使うBuiltInCategoryの一覧
- 外部ツールでAutodesk.Revit.Documentを取得する方法
- エラーメッセージの設定方法
- 「はい」、「いいえ」、「キャンセル」ボタンの設置と処理分岐
- 要素(カテゴリ、ファミリ、タイプ)とは
- ElementIdとUniqueIdの違い
- 要素フィルターの使い方
- 要素のパラメータ一覧の取得
- pyRevitの導入と簡単なアプリケーションの作成
- Revit SDKのサンプルの場所とビルド方法
- FamilySymbol(タイプ)の取得とパラメータの変更
- 相対パスでdllにアイコン画像を埋め込む方法
- 「グループ」について
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?