Home > Excel VBA Macro フロー制御 > FAQ

メッセージボックスでの選択結果により異なる処理をするには?

Question 055k 拙著「組み方講座」 Previous Next
77ページ [3-1-9図] ◆ 環境・・ Excel ?
詳細は こちら
メッセージボックスで 「はい」 「いいえ」を表示させ、「はい」の場合は Aの処理を、「いいえ」の場合は Bの処理をさせるにはどうするのでしょうか。
Answer   Copyright (C) 2005.12.10 永井善王
拙著「ExcelVBAマクロ組み方講座」ご愛読いただき、ありがとうございます。

MsgBox関数の学習は本の 75~77ページにありまして、「応答必要な場合」のコードの書き方が 75ページの[用語!]の中に、そして、77ページの「応用力を磨こう」の中に右図のメッセージボックスを作成する方法が載っています。

また、それに続く 78ページで、[条件判断して実行順序を変えてみる]方法を学習します。
ご質問は、この 2つをどう組み合わせれば可能になるか、ですね。

まずは、下記のサンプルをご覧ください。 (説明用に行番号を入れてあります。)
Sub メッセージボックスでの選択結果により異なる処理をする()
10  選択 = MsgBox("権限をお持ちですか", vbYesNo + vbExclamation, _
                  "閲覧制限されたブックです")
20  If 選択 = vbYes Then                        '[はい]なら
30      Worksheets("Sheet1").Activate           '※1 (例示:Sheet1をアクティブにする)
40  Else                                        'そうでないなら
50      ThisWorkbook.Close SaveChanges:=False   '※2 (例示:このブックを閉じる)
60  End If
End Sub
10行目 ・・・ メッセージボックスを表示してユーザーが選択した結果を変数「選択」に取得します。
       [はい] を選択すると vbYes が、 [いいえ] なら vbNo が返ります。
30行目 ・・・ ここへ [はい] の場合の処理を記述します。何行かあっても構いません。
50行目 ・・・ ここへ [いいえ]       〃               〃

さっそく、このサンプルを応用して組んでみてください。 そして、新たな疑問点が出ましたら、改めてご質問ください。

 

Excel VBA Macro

Excel DownLoad