エクセルVBAでのアプリケーションレベルのイベントを作成する方法
アプリケーションレベルのイベントは、アプリケーション全体で機能します(このリファレンスではExcel)。ただし、アプリケーションイベントのアクティブ化は、ワークブックまたはワークシートイベントの作成ほど簡単ではありません。しかし、それもそれほどトリッキーではないことを保証します。この記事では、ExcelVBAでアプリケーションイベントを作成して使用する方法をいくつかの簡単な手順で学習します。
ステップ1:クラスモジュールでイベントオブジェクトを作成する
イベントオブジェクトを作成するには、クラスモジュールを使用する必要があります。
-
`link:/ modules-class-modules-in-vba-vba-class-modules-and-how-to-use-them [classmodule]`を挿入します。必要に応じて名前を付けます。 MyAppEventsという名前を付けました。
-
キーワードWithEventsを使用してアプリケーションタイプのイベント変数を定義します。
Private WithEvents myApp As Application
-
class_initialize()サブルーチンでこのイベントを初期化します。
左側のドロップダウンから、クラスを選択します。その後、右上のドロップダウンで[初期化]を選択します。
Private Sub Class_Initialize() Set myApp = Application End Sub
-
次に、使用するイベントを定義します。左上のドロップダウンから、イベントオブジェクトを選択します。利用可能なすべてのイベント処理手順は、右上のドロップダウンメニューで利用できます。必要なものを選択し、そのイベントがトリガーされたときに実行する操作を定義します。image:https://www.office-skill.site/images/wp-content-uploads-2020-01-Capture-37.jpg [image、幅= 540、高さ= 208]
SheetActivateイベントを使用します。ユーザーが開いているワークブックのシートを切り替えると、ワークブックの名前とユーザーが選択したシートが表示されます。
Private Sub myApp_SheetActivate(ByVal Sh As Object) MsgBox ActiveWorkbook.Name & "-" & Sh.Name End Sub
ここで定義したいイベントをいくつでも定義できます。
イベントはすぐには機能しません。これが最初のステップでした。
これはクラスモジュールであるため、イベントをアクティブ化するには、そのオブジェクトを作成する必要があります。
これで、これらのイベントを通常のサブルーチンから開始するだけで済みます。
ステップ2:通常のモジュールでイベントスターターサブルーチンを作成する
これでイベントクラスができました。そのクラスのオブジェクトを作成して初期化するだけです。このサブルーチンを実行すると、イベントクラスで定義されたすべてのイベントが機能し始めます。
-
通常のモジュールを挿入します。
-
作成したクラスの変数を定義します。
Private AppE As MyAppEvents
-
サブルーチンで初期化します。好きな名前を付けることができます。
Private Sub StartEvents() Set AppE = New MyAppEvents End Sub
-
F5キーを使用してこのコードを実行します。ワークシートからイベントを開始する場合は、オプションで、このマクロをワークシートのボタンに割り当てることができます。
そして、それは行われます。これで、シートを切り替えるたびに、ワークブックを含むコードが開いている限り、ワークブックの名前とシートを示すメッセージボックスが表示されます。
大変でしたか?私はそうは思いません。下のコメント欄であなたの考えを教えてください。
VBAアプリケーションイベントのオンとオフの切り替え通常のモジュールでマクロを実行すると、イベントを含むブックを閉じるまで、マクロは常にトリガーされます。ただし、自由にオンとオフを切り替えてほしい場合があります。これを行うには2つの方法があります。
イベントオブジェクトを無効にし、EnableEventsをFalseに設定します
1。イベントオブジェクトを無効にする
別のサブルーチンで、イベントオブジェクトをNothingに設定します
Private Sub StopEvents() Set AppE = Nothing End Sub
このコードを実行すると、イベントは機能しなくなります。ワークシートのボタンに配置して、イベントを停止できます。これで、これらの特定のイベントを開始および停止するための2つのボタンがあります。 AppEオブジェクトによって作成されたイベントを停止するだけです。
2.EnableEventsをFalseに設定します
2番目の方法は、イベントを無効にすることです。すべてのイベントをキャッチ不能にするには、ApplicationクラスのEnableEventsプロパティを
に設定します。 ===誤り。
Private Sub StopEvents() Application.EnableEvents= False End Sub
上記のコードは、すべてのイベントを無効にします。デフォルトのExcelイベントですら。もう一度起動するまで機能しません。 StartEvents()サブルーチン(上記)を実行しても、イベントは機能しません。すべてのイベントを再び機能させるには、EnableEventsプロパティを再度Trueに設定する必要があります。
したがって、イベントを開始するたびにイベントを機能させる場合は、このコード行をサブに追加します。
Private Sub StartEvents() Application.EnableEvents = True Set AppE = New MyAppEvents End Sub
ワークブックを開くたびにCustomeアプリケーションイベントを開始するエンドユーザー向けのツールを開発している場合は、イベントを自動的に機能させることができます。その場合、イベントスターターを「link:/ events-in-vba-workbook-events-using-vba-in-microsoft-excel [Workbookobject]」のWorkbook_open()イベントではなく、通常のモジュール。これにより、イベントを含むブックを開くとすぐに、イベントオブジェクトが初期化されます。
そうですね、これがアプリケーションイベントをExcelで使用する方法です。これが十分に説明的であり、以下のコメントセクションでExcelVBAのアプリケーションレベルのイベントを理解するのに役立ったかどうかをお知らせください。これに追加するものがある場合は、それも書き留めてください。以下のコメントセクションで、この記事またはその他のExcelVBA関連のトピックに関連する質問をすることができます。
以下の作業ファイルをダウンロードしてください:
関連記事:
link:/ events-in-vba-the-events-in-excel-vba [ExcelVBAのイベント]
| Excelには7種類のイベントがあります。各イベントは異なる範囲を扱います。アプリケーションイベントは、ワークブックレベルで扱います。シートレベルのワークブック。範囲レベルのワークシートイベント。
link:/ events-in-vba-the-worksheet-events-in-excel-vba [ExcelVBAのワークシートイベント]
* |ワークシートイベントは、指定されたイベントが発生したときにマクロを実行する場合に非常に便利です。シート。
link:/ events-in-vba-workbook-events-using-vba-in-microsoft-excel [MicrosoftExcelでVBAを使用するブックイベント]
|ブックイベントは、ブック全体で機能します。すべてのシートがワークブックの一部であるため、これらのイベントもそれらに作用します。
link:/ events-in-vba-prevent-that-an-automacroeventmacro-executes-using-vba-in-microsoft-excel [MicrosoftExcelでVBAを使用してautomacro / eventmacroが実行されるのを防ぐ]
* | auto_openマクロの実行を防ぐには、Shiftキーを使用します。
link:/ events-in-vba-chart-object-events-using-vba-in-microsoft-excel [MicrosoftExcelでVBAを使用してオブジェクトイベントをグラフ化する]
* |チャートは複雑なオブジェクトであり、それらにアタッチしたコンポーネントがいくつかあります。チャートイベントを作成するには、クラスモジュールを使用します。
人気の記事:
link:/ keyboard-formula-shortcuts-50-excel-shortcuts-to-increase-your-productivity [生産性を高めるための50のExcelショートカット]
|あなたの仕事をより速くしてください。これらの50のショートカットにより、Excelでの作業がさらに高速になります。
link:/ forms-and-functions-introduction-of-vlookup-function [ExcelのVLOOKUP関数]
|これは、さまざまな範囲やシートから値を検索するために使用される、Excelの最も使用され人気のある関数の1つです。
link:/ Tips-countif-in-microsoft-excel [COUNTIF in Excel 2016]
|この驚くべき関数を使用して、条件付きの値をカウントします。特定の値をカウントするためにデータをフィルタリングする必要はありません。
ダッシュボードを準備するには、Countif関数が不可欠です。
link:/ excel-formula-and-function-excel-sumif-function [ExcelでSUMIF関数を使用する方法]
|これは、ダッシュボードのもう1つの重要な機能です。これは、特定の条件で値を合計するのに役立ちます。