トップ > 備忘録 > 【簡単解説】VBAクラスモジュール 4:実践 アプリケーションイベント

【簡単解説】VBA クラスモジュール 4実践 アプリケーションイベント   2021.06.29

今回は、クラスモジュールを活用したアプリケーションのイベントについてです。

内容

●アプリケーションイベント
 ・サンプルコード
 ・解説

サンプルファイル

記事に載せてあるコードサンプルのファイル ダウンロード


【お薦め】マクロ・プロシージャを管理する無料のツール!
 Excelマクロ管理ツール

アプリケーションイベント

サンプルコード

モジュールは次の2つを使用している。
 ・クラスモジュール
 ・標準モジュール
それぞれに記述のコードは次である。

●クラスモジュール
'宣言セクション
Public WithEvents objApp As Excel.Application 'イベントに応答するタイプで宣言

Private Sub objApp_NewWorkbook(ByVal Wb As Workbook) 'アプリケーションイベント MsgBox Wb.name '新規ブックの名前を取得 End Sub
●標準モジュール
'宣言セクション
Public clsApp As New Class1

Sub App_Set() 'Class1のobjAppにExcelアプリをセット Set clsApp.objApp = Excel.Application End Sub
Sub Add_Book() 'ワークブックを新規で追加 Workbooks.Add End Sub

記述に問題がなければ、クラスモジュールでアプリケーション型のイベントを確認できる。
下図のように、左のリストボックスでobjApp(アプリケーション型イベント応答タイプ変数)を選択し、右のリストボックスでイベントを選択する。



サンプルの変数名はobjAppだが、名前は自由につけて構わない。

標準モジュールの「App_Set」を実行すると、変数にアプリケーションが紐づけられ、イベントに対応するようになる。
クラスモジュールでは、objApp_NewWorkbookイベント(新規ブック追加時に発生するイベント)が用意されているので、新規でブックを開くとこのイベントが応答する。
イベントの内容は「ブックの名前を表示」である。

標準モジュールの「Add_Book」を実行すると、イベントを確認できる。


アプリケーションのイベントは、イベント応答タイプの変数に、Excelアプリがセットされている場合にのみ発生する。
従って今回の場合は「App_Set」を実行してから「Add_Book」を実行しないとイベントは発生しない。

また、イベント応答タイプの変数にExcelアプリケーションをセットしても、マクロのエラー等で変数が初期化されると、イベントは応答しなくなるので注意が必要である。



ページトップへ戻る
Copyright(C) 2009- 坂江 保 All Rights Reserved.