
作業ブックのThisWorkbookに下記のコードを設定しています。
ブックを開くとメッセージボックスが表示されて、
はい(Y)をクリックすると以下のマクロが実行されます。
いいえ(N)をクリックするとマクロが実行されません。
このコードを
はい(Y)の代わりに「新築」と表示し、それをクリックするとマクロ「新築シート表示」が実行
同じく
「増築」と表示し、それをクリックするとマクロ「増築シート表示」が実行
「変更」と表示し、それをクリックするとマクロ「変更シート表示」が実行
「キャンセル」と表示し、それをクリックするとすべてのマクロが非実行
に出来る方法を教えてください。
現行のコード
Private Sub Workbook_Open()
Dim alert As VbMsgBoxResult
alert = MsgBox("シートを表示しますか?", vbYesNo + vbQuestion, "シート確認")
If alert <> vbYes Then
Exit Sub
End If
Call 新築シート表示
Call 増築シート表示
Call 変更シート表示
End Sub
以上となります。
よろしくお願いいたします。

No.2ベストアンサー
- 回答日時:
ユーザーフォームを使用して、処理を振り分ける例です。
1.添付図のようなユーザーフォームを作成します。
①UserForm1を作成(Captionは"シート確認")
②Label1を配置(Captionは""シートを表示しますか?")
③CommandButton1を配置(Captionは"新築")
④CommandButton2を配置(Captionは"増築")
⑤CommandButton3を配置(Captionは"変更")
⑥CommandButton4を配置(Captionは"キャンセル")
2.UserForm1に以下のマクロを記述します。
Private Sub CommandButton1_Click()
exec_name = "新築"
Unload Me
End Sub
Private Sub CommandButton2_Click()
exec_name = "増築"
Unload Me
End Sub
Private Sub CommandButton3_Click()
exec_name = "変更"
Unload Me
End Sub
Private Sub CommandButton4_Click()
Unload Me
End Sub
3.ThisWorkbookに以下のマクロを記述します。
Private Sub Workbook_Open()
exec_name = ""
UserForm1.Show
Select Case exec_name
Case "新築"
Call 新築シート表示
Case "増築"
Call 増築シート表示
Case "変更"
Call 変更シート表示
Case Else
Exit Sub
End Select
End Sub
4.標準モジュールに以下のマクロを記述します。(変数の宣言のみです。Userform1とThisworkbookから参照可能にするためです)
Public exec_name As String
以上で完了です。

No.1
- 回答日時:
こんにちは
MsgBoxでは表示できるアイコンやボタンは限られています。
ご質問のように、自由にボタンをレイアウトして使いたければ、ユーザーフォームを作成してそちらを利用してください。
https://www.sejuku.net/blog/94367
https://www.start-macro.com/55/uf/
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VBAの「To」という語句について
Visual Basic(VBA)
-
以下のプログラムの実行結果はどうなると思いますか? その理由も教えてください。
Visual Basic(VBA)
-
算術演算子「¥」の意味について
Visual Basic(VBA)
-
-
4
VB.net 文字列から日付型へ変更したい
Visual Basic(VBA)
-
5
Excelの数式について教えてください。
Visual Basic(VBA)
-
6
VBAでFOR NEXT分を Application.OnTimeを使って
Visual Basic(VBA)
-
7
Excel VBAについて。こんな動作をさせるためにはどう書けばよいでしょうか。
Visual Basic(VBA)
-
8
改行文字「vbCrLf」とは
Visual Basic(VBA)
-
9
VBA 2次元配列の出力
Visual Basic(VBA)
-
10
Cのプログラムからアクセスできないファイル名の一括変更方法
C言語・C++・C#
-
11
excelVBAについて。
Excel(エクセル)
-
12
Visualbasicの現状について教えてください
Visual Basic(VBA)
-
13
VBAのエラー表示の対処法について
Visual Basic(VBA)
-
14
VBA 最終行の取得がうまくいかず上書きされてしまいます。
Visual Basic(VBA)
-
15
C言語 関数、変数の宣言について
C言語・C++・C#
-
16
C言語について(初心者)
C言語・C++・C#
-
17
COPYコマンドで、最後に1文字「Hex1A」が付くのはなぜ?外し方は?
その他(プログラミング・Web制作)
-
18
VBA 同じフォルダ内のすべてのファイルに同じセルをペーストしたい
Visual Basic(VBA)
-
19
質問58753 このコードでうまく動作しません。どうしたら良いですか Private Sub Wor
Visual Basic(VBA)
-
20
pythonの実行に関する質問
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでCOPYを繰り返すと、処理が...
-
vbsでのwebフォームへの入力制限?
-
【ExcelVBA】5万行以上のデー...
-
複数のExcelファイルをマージす...
-
Vba Array関数について教えてく...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
Vba セルの4辺について罫線が有...
-
改行文字「vbCrLf」とは
-
【マクロ】開いているブックの...
-
エクセルのマクロについて教え...
-
エクセルの改行について
-
Excel VBA 選択範囲の罫線色の...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
以下のプログラムの実行結果は...
-
【ExcelVBA】値を変更しながら...
-
Vba 型が一致しません(エラー1...
-
Excelのマクロについて教えてく...
-
vbaにてseleniumを使用したedge...
-
Excel 範囲指定スクショについ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Vba Array関数について教えてく...
-
VBAでCOPYを繰り返すと、処理が...
-
【ExcelVBA】5万行以上のデー...
-
【マクロ】シートの変数へ入れ...
-
vbsでのwebフォームへの入力制限?
-
エクセルのマクロについて教え...
-
【マクロ】並び替えの範囲が、...
-
Vba セルの4辺について罫線が有...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
VBAでユーザーフォームを指定回...
-
【マクロ】開いているブックの...
-
エクセルの改行について
-
vb.net(vs2022)のtextboxのデザ...
-
エクセルのVBAコードと数式につ...
-
算術演算子「¥」の意味について
-
Excelのマクロについて教えてく...
-
改行文字「vbCrLf」とは
-
ワードの図形にマクロを登録で...
-
VBAの「To」という語句について
-
【マクロ】変数を使った、文字...
おすすめ情報