[Excel VBA] イベント処理 <確認問題>

2025年3月1日

スポンサーリンク

以下は、Excel VBAのイベント処理に関する理解度チェック問題です。
初級レベルの方向けの内容になっています。問題は5問あります。挑戦してみましょう。

【問題1】Workbook_Openイベント

次のコードは、ブックを開いたときにメッセージボックスを表示するものです。コードを正しく動作させるためには、どこに記述すればよいでしょうか?

  1. 任意の標準モジュール(Module1など)
  2. Sheet1 (シート1) のコードウィンドウ
  3. ThisWorkbook のコードウィンドウ
  4. ExcelのVBAエディターには記述せず、シートのセルに入力
正解:

3) ThisWorkbook のコードウィンドウ
(解説) Workbook_Open イベントは ThisWorkbook に記述する必要があります。ThisWorkbookは自分自身(マクロファイル)のことを指します。

【問題2】Worksheet_Changeイベント

Worksheet_Change イベントを使うと、どのようなタイミングで処理が実行されますか?

  1. セルの値が変更されたとき
  2. シートが選択されたとき
  3. セルの書式が変更されたとき
  4. ブックが開かれたとき
正解:

1) セルの値が変更されたとき
(解説) Worksheet_Change は、セルの値が変更されたときに発生します。

【問題3】Worksheet_SelectionChangeイベント

次のコードを実行したとき、どのような動作をしますか?

  1. ワークシートが開かれたときにメッセージが表示される
  2. A列のセルを選択するとメッセージが表示される
  3. セルの値を変更するとメッセージが表示される
  4. マクロを実行しないとメッセージは表示されない
正解:

2) A列のセルを選択するとメッセージが表示される
(解説) Worksheet_SelectionChange イベントは、セルが選択されるたびに発生します。
「シートの選択範囲」がイベントの対象となるので、こちらのコードはSheet1などのシートオブジェクトモジュールに記述します。

【問題4】Workbook_BeforeCloseイベント

次のコードを実行すると、どのような動作をしますか?

  1. ブックを閉じるたびにメッセージが表示され、No を選択すると閉じるのをキャンセルできる
  2. ブックを閉じた後にメッセージが表示される
  3. ブックを閉じると強制的にExcelが終了する
  4. 何も起こらない
正解:

1) ブックを閉じるたびにメッセージが表示され、No を選択すると閉じるのをキャンセルできる
(解説) Workbook_BeforeClose イベントで Cancel = True にすると、ブックの閉じる動作をキャンセルできます。このイベントプロシージャはブックに対するものなのでThisWorkbookに記述します。

【問題5】シートの変更を検出

Worksheet_Change イベントを使って、セルA1に「完了」と入力されたらメッセージを表示するコードはどれでしょうか?

1.

2.

3.

4.

正解:

2)
(解説)
Worksheet_Change ⇒対象のセルの値が変わったときに発生する。
Target.Address = “$A$1″ ⇒A1セルのみを対象にする。

2)と3)の違いについて
2)はWorksheet_Changeイベントで、プロシージャはシートモジュールに記述されます。
3)はWorkbook_SheetChangeイベントで、プロシージャはブックモジュールに記述されます。こちらはブック全体が対象のため、シートに依らずイベントが発生するとプロシージャが実行されます。
今回の問題では「Worksheet_Change イベントを使って」となっているため3)は×となりますが、処理内容は2)と3)で同じです。

スポンサーリンク

確認・練習問題Excel,VBA

Posted by Nh