重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

作業ブックの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
以上となります。
よろしくお願いいたします。

「ExcelのVBAコードについて教えてく」の質問画像

A 回答 (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


以上で完了です。
「ExcelのVBAコードについて教えてく」の回答画像2
    • good
    • 0
この回答へのお礼

回答、ありがとうございました
詳しくコードまで教えて頂き、
感謝いたします
上手くできました

お礼日時:2024/12/03 20:46

こんにちは



MsgBoxでは表示できるアイコンやボタンは限られています。

ご質問のように、自由にボタンをレイアウトして使いたければ、ユーザーフォームを作成してそちらを利用してください。
https://www.sejuku.net/blog/94367
https://www.start-macro.com/55/uf/
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
そうなんですね、参考にさせて頂きます。

お礼日時:2024/12/03 10:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A