Excelイベントの作成・使用方法についてと使用時コード。イベントの中でも特殊なものです
			 
			
	
	
		
コードコピー 'Excelのアプリを代入する変数、イベント作成が可能
Dim WithEvents エクセル As Excel.Application 
コードコピー '変数とExcelの紐付け(イベントが発生する)
Set エクセル = Excel.Application 
コードコピー '紐付けの解除(イベントは発生しない)
Set エクセル = Nothing 
Excelオブジェクトの作成 
Excelイベントを作成するには、Excel自体をまずオブジェクトとして作成を行う 必要がありますオブジェクトモジュール内の最上部に挿入する だけで可能です
コードコピー 'Excelのアプリを代入する変数、イベント作成が可能
Dim WithEvents エクセル As Excel.Application 
このコードを入れたモジュール内では、オブジェクトボックスに変数名が表示されます コードを入力した時点で使用可能になっています 
オブジェクトが作成されている状態 ここで使用しているWithEventsキーワード は、変数でイベントの作成を行うことが出来るようにするステートメントですオブジェクトモジュール内でしか使用できません 
コーディング時点でエラーが発生するので、エラーが発生しないモジュールに移動してもらえばいいです
基本的には、ThisWorkbookかUserForm内に作成すればいいです
イベントの作成と変数の紐付け 
イベントの作成に関しては、通常のイベント作成と同様 に行えます
イベントの作成 画像の様にオブジェクトボックスから選んだ時点で既定のイベントが作成されますので、違うイベントを作成したい場合は通常通りです
さらに、もう一つ作業が必要になります紐付け作業 です
コードコピー '変数とExcelの紐付け(イベントが発生する)
Set エクセル = Excel.Application 
このコードを実行する事で、変数のExcelとコードを実行したExcelが紐付けられます 
基本的には、WorkbookイベントのOpenイベントであったり、UserFormのInitializeイベントの初期イベントで実行しておきます
コードコピー '紐付けの解除(イベントは発生しない)
Set エクセル = Nothing 
そして、この紐付けを解除するには変数を初期化 します
オブジェクト変数なので、この解除(解放)までをセットで使用するようにしてください
基本的には、WorkbookのCloseイベントやUserFormのTerminateイベントの終了イベントで実行するようにします
イベント発生時の動き 
上記のコードで紐付けが完了したら、イベントが発生するようになります
Private Sub エクセル_NewWorkbook(ByVal Wb As Workbook)
MsgBox Wb.Name
End Sub
-------------------------------------------------------------------------
Private Sub Workbook_Activate()
'変数とExcelの紐付け(イベントが発生する)
Set エクセル = Excel.Application
End Sub
-------------------------------------------------------------------------
Private Sub Workbook_Deactivate()
'紐付けの解除(イベントは発生しない)
Set エクセル = Nothing
End Sub 
今回の例では上記のようなコードを作成しています
イベントは、新規ブック作成時に発生するイベントです
イベントが発生する動き まずは、新規作成によりイベントが発生している動きです新規作成を行う事で新規作成された「Book1」の名前がメッセージに表示 されます
紐付けが解除されている動き 次に、そのBook1でさらに新規作成を行った時の動きです
ここではイベントが発生していませんBook1作成時点で非アクティブになったためExcelの紐付けが解除されたため です
再度紐付けされた動き 最後に、また元のブックに戻って再度新規作成を実行します
元のブックがアクティブ状態になったことで、また紐付けが行われたため
Excelイベントの使用について 
上記の通りに、Excelのイベントを作成して実行できます
例で挙げたような、新規作成ブックの名前を表示する処理は非常に単純な処理ですが、これをイベントを使用せずにする場合はいろいろな事を考慮して作成する必要があり面倒です
イベントを使用すれば、作成したブックが引数としてオブジェクトに取得される ため、その後の新規作成ブックに対する処理が非常に簡単に行えるようになります
また、このExcelイベントの強力な利点 は、Excel自体のイベントプロシージャの作成をマクロブックに行うことで、そのマクロブックを開いて紐付けをしておけば、マクロ無しの標準ブックであってもイベント処理を実行することが出来る点 です通常の処理であればブックを指定すれば可能 です
会社の規定などにより、マクロ有効ブックが作成できない場合があります 
そんな時に、このExcelイベントの出番になりますブック全てに対して有効なイベント なので、シートのセルをダブルクリックするイベントなどを標準形式保存のマクロ無しブックでも実行する事が出来るようになります
SheetBeforeDoubleClickイベント は、シートのセルをダブルクリックすると発生するイベントです
WorkbookOpenイベント を利用すれば、ブックのOpenイベントも必要ありません
考えれば考えるほど、応用力があるイベントになりますえぇっ!?そんなことまでっ!!? 
ただ、イベント特有の注意点が便利なほど重要になってきます
基本的には、このイベントでしか実現できない処理にだけ使用します