イベントによって自動的に実行されるプロシージャ

イベントマクロ
イベントとは

リンクユニット


イベントプロシージャ 01回

イベントプロシージャーというマクロ

このサイトで紹介してきたVBAのマクロプログラムは、ほとんどが基本的にユーザが意識的に呼び出して、実行させる形式のものでした。
イベントプロシージャーと呼ばれるタイプのVBAプログラムは、あらかじめ設定した特定のタイミング(このタイミングはイベントと呼ばれるものです)で 自動的に実行される形式のプログラムです。
自動的に実行されてしまうと言うのは、マクロのウィルスなどを連想すると少し怖い気もします。
ですが使ってみると非常に便利だということが分かるでしょう。つまり自分が作成したマクロをイベントで実行するのなら、何の問題もないということです。そこでイベントの内容を理解し安全であることを充分実感した上で使ってみると言うのが良いのではないでしょうか。

イベントプロシージャーの基礎知識

1. まず初めにイベントプロシージャーの基礎知識を勉強しましょう。
まずイベントによって自動的に実行されるプロシージャについての概要とイベントプロシージャを記述する方法について説明します。
イベントとはブックやシートといったExcelのオブジェクトに対して特定の操作をした場合に発生するものです。イベントを受け取ることができるオブジェクトの側では専用のコードウインドウにイベント発生時に実行されるプログラムを記述しておきます。


NAMAE1

2. Visual Basic Editorを開いたら、プロジェクトエクスプローラーから、ここではSheet1にイベントプロシージャ(イベントのマクロ)を記述したいので、ダブルクリックするか、右クリックからコードの表示でコード画面を表示させます。


NAMAE2

3. すると、このようなコード画面が表示されます。これはSheet1のコード画面です。
左上のブルーのワクで囲った部分は、オブジェクトボックスといい、右上の赤いワクで囲った部分は、プロシージャボックスといいます。


NAMAE3

4.今までのマクロではコードは基本的に標準モジュールに記述するものでした。
イベントによって実行されるマクロは、各オブジェクトの専用コードモジュールに記述します。
最初から受け入れる器があると思ってください。そしてそのオブジェクトに対して発生した、何らかの操作や事態に応じて、自動的に実行されます。
では、左のオブジェクトボックスの三角をクリックして、どのオブジェクトを対象にするか決めましょう。
オブジェクトはWorksheetしかありません。


NAMAE4

Worksheetのイベント

5. Sheet1のオブジェクトはWorksheetしかなく、デフォルトのイベントプロシージャは、Worksheet_SelectionChange(ByVal Target As Range)というプロシージャです。これは自動的にコードウィンドーに挿入されます。使わない場合は、デフォルトのコードは削除してかまいません。


NAMAE5

6.そしてWorksheetに対応するプロシージャの一覧を見てみましょう。右側のプロシージャボックスをクリックすると一覧が表示されます。使いたいプロシージャをここから選ぶようになっています。


NAMAE5

Worksheetのイベント一覧

Activateシートがアクティブになった直後
BeforeDoubleClickセルがダブルクリックされた瞬間
BeforeRightClickセルが右クリックされた瞬間
BeforeDeleteシートが削除される直前
Calculateシートが再計算された直後
Changeセルが変更された直後
Deactivateシートがアクティブでなくなった直後
FollowHyperlinkハイパーリンクが区チックされた直後
PivotTableAfterValueChangeピボットテーブル内のせルが編集された直後
PivotTableBeforeAllocateChangesピポットテーブルに変更が適用される直前
PivotTableBeforeCommitChangesピポットテーブルの変更がコミッ卜される直前
PivotTableBeforeDiscardChangesピポットテーブルの変更が繊楽される直前
PivotTableChangeSyncピポットテーブルが変更された直後
PivotTableUpdateピポットテーブルが更新された直後
SelectionChange選択範囲が変更された直後
LensGalleryRenderCompleteクイック分析のー売が表示された直後
TableUpdatePowerPivotクエリテーブルが更新された直後

7.自動でデフォルトのSelectionChangeが追加されましたが、その間に実行する処理のコードを書きます。 間に Target.Interior.ColorIndex = 18 などと書くと移動したセルの背景色が変更になります。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
	'実行されるコード
End Sub

Worksheet_SelectionChange5 border=0