イベント処理

ワークブックのイベント処理

 ブックを開いた時、あるいはブックを閉じる時、ある決まった処理を行うときのイベント処理について解説します。

 「イベント処理とは」でも言いましたが、こうしたイベント処理のプロシジャは標準モジュールには記述しませんので注意してください。

ブックを開く時に処理を実行

 ワークブックを開く時にある決まったイベント処理を行う場合は、VBEにあるプロジェクトエクスプローラー内の「ThisWorkbook」をダブルクリックし、開かれるモジュールにプロシジャを記述します。

 ワークブックを開いた時に、最初のシートにその日の年月日を表示させてみます。

Private Sub Workbook_Open()

   Worksheets(1).Range(“A1”) = _

“本日は ” & Date & ” です。”

End Sub

① プロジェクトエクスプローラで「ThisWorkbook」をダブルクリックすると、コードウィンドウが開きます。

② オブジェクトボックスで「Workbook」を選択します。

③ プロシージャボックスで「Open」を選択します。

④ 空の「Workbook_Openイベントプロシージャ」が作成されます。

⑤ ここに処理内容を記述します。

 ここでのポイントは ①・②・③ です。

①の後、②左でオブジェクトを選択すると、③それに対応するイベント一覧がプロシージャボックスに表れます。

イベントを選択すると、④「そのイベントに対応したイベント処理の空のプロシージャ」がモジュール上に表れるという流れです。

この空のプロシジャの部分にコードを記述することによって、「そのイベント発生時にコードが実行される」ことになります。

イベントプロシージャは、形式さえ合えばこうしたひな形を作らずに、直接記述しても別段問題はありません。

ただプロシージャボックスのドロップダウンリストから選択する方が確かですし、手軽です。

ブックを閉じる時に処理を実行

 ブックを閉じる直前に何らかのイベント処理を行う場合は、「Workbook_BeforeClose」プロシージャを ThisWorkbook に作成します。

Private Sub Workbook_BeforeClose(Cancel As Boolean)

  Dim ans As Long

  ans = MsgBox(“全て正しく入力されましたか?”, vbYesNo)

  If ans = vbYes Then

 Cancel = Fals

  Else

 Cancel = True

  End If

End Sub

これは Excel の右上の「xボタン」を押して Excel を終了させようとしたときに実行されるプロシージャです。

オブジェクトに「Workbook」を、イベント一覧から「BeforeClose」を選択します。

「Workbook_BeforeClose(Cancel aAs Boolean)」のイベントプロシージャが作成されます。

この場合は「(Cancel As Boolean)」という引数も書かれています。

これは「Cancel=False」にすると、このイベント処理を中止します。

すなわち、Workbook が閉じるのを中止します。

反対に「Cancel=True」にすると Workbook のイベント処理を実行しますのでそのまま閉じてしまいます。

イベント処理とは  Excel マクロでは「実行ボタン」を押して、ある決められたマクロを実行させます。  ところがそれのみならず、Excelで「ブ...
ワークシートのイベント処理  ここではあるワークシートがアクティブになった時、あるいはシート内の内容が変更された時など、シート内のイベントによって発生するイベント...