ExcelでVBAを使用して埋め込みグラフのイベント
チャートシートイベント( link:/ Tips-how-to-move-a-chart-to-a-new-sheet-in-excel [特にチャートのワークシート]
)の使用は非常に簡単です。しかし、埋め込みグラフでイベントを使用する場合、それはそれほど単純ではありません。ただし、グラフが埋め込まれたイベントをアクティブ化するのはそれほど難しくありません。これは、 `link:/ events-in-vba-how-to-create-application-level-events-in-excel-vba [アプリケーションイベントの作成]`によく似ています。それで、さらに遅れることなく、始めましょう。
したがって、埋め込みチャートイベントをアクティブ化するには2つのステップがあります。 1つは、チャートイベントクラスの作成とイベントの定義です。 2つ目は、そのイベントクラスのオブジェクトを作成することです。それでおしまい。
ステップ1:チャートイベントクラスを作成し、イベントを定義する
-
`link:/ modules-class-modules-in-vba-vba-class-modules-and-how-to-use-them [classmodule]`を挿入します。必要に応じて名前を付けます。 ChartClassと名付けました。
-
キーワードWithEventsを使用してチャートタイプのイベント変数を定義します。
Private WithEvents CEvents As Chart
-
class_initialize()サブルーチンでこのイベントを初期化します。
左側のドロップダウンから、クラスを選択します。その後、右上のドロップダウンで[初期化]を選択します。
Private Sub Class_Initialize() Set CEvents = ActiveSheet.ChartObjects(1).Chart End Sub
ここでは、そのシートに作成された最初のチャートを使用してCEventsチャートを初期化しています。 1は、アクティブシート上のチャートオブジェクトのインデックス番号です。
-
ここで、使用するイベントを定義します。左上のドロップダウンから、CEventオブジェクトを選択します。利用可能なすべてのイベント処理手順は、右上のドロップダウンメニューで利用できます。必要なものを選択し、そのイベントがトリガーされたときに実行する操作を定義します。
使用法を示すために、CEvents_Activateイベントを選択します。チャートイベントがアクティブ化されていることをメッセージボックスでユーザーに表示しようとします。
Private Sub CEvents_Activate() MsgBox "The chart Events are working" End Sub
ここでの作業は完了です。ここで、チャートタイプで使用可能なイベントから必要な数のイベントを作成できます。しかし、それは単なるクラスであるため、イベントはまだ機能しません。このクラスのオブジェクトは、通常のモジュールまたはオブジェクトモジュールのサブに作成する必要があります。次に、そのサブを実行します。
その後、私たちのイベントが始まります。
ステップ2:モジュールでチャートクラスオブジェクトを作成します。
-
通常のモジュールを挿入します。
-
前に作成したクラスの変数を宣言します。
Dim mychart As ChartClass
-
subを作成し、クラスChartClassのオブジェクトで変数を初期化します。
Sub activateChartEvent() Set mychart = New ChartClass End Sub
F5を使用してこのサブを実行します。このコードを実行すると、チャートeventSet CEvents = ActiveSheet.ChartObjects(1).Chart。*の初期化にこの行を使用したため、現在アクティブなシートの最初のチャートでチャートイベントがアクティブになります。現在アクティブなシートの最初のチャートをクリックすると、チャートイベントが機能しているというメッセージが表示されます。
VBAアプリケーションイベントのオンとオフの切り替え通常のモジュールでマクロを実行すると、イベントを含むブックを閉じるまで、マクロは常にトリガーされます。ただし、自由にオンとオフを切り替えることができます。これを行うには2つの方法があります。
イベントオブジェクトを無効にし、EnableEventsをFalseに設定します
1。イベントオブジェクトを無効にする
別のサブルーチンで、イベントオブジェクトをNothingに設定します
Private Sub StopEvents() Set Mychart= Nothing End Sub
このコードを実行すると、イベントは機能しなくなります。ワークシートのボタンに配置して、イベントを停止できます。これで、これらの特定のイベントを開始および停止するための2つのボタンがあります。 AppEオブジェクトによって作成されたイベントを停止するだけです。
2.EnableEventsをFalseに設定します
2番目の方法は、イベントを無効にすることです。すべてのイベントをキャッチ不能にするには、ApplicationクラスのEnableEventsプロパティをFalseに設定します。
Private Sub StopEvents() Application.EnableEvents= False End Sub
上記のコードは、すべてのイベントを無効にします。デフォルトのExcelイベントですら。もう一度起動するまで機能しません。 StartEvents()サブルーチン(上記)を実行しても、イベントは機能しません。すべてのイベントを再び機能させるには、EnableEventsプロパティを再度Trueに設定する必要があります。
したがって、イベントを開始するたびにイベントを機能させる場合は、このコード行をサブに追加します。
Private Sub StartEvents() Application.EnableEvents = True Set mychart = New ChartClass End Sub
ワークブックが開くたびにカスタムチャートイベントを開始するエンドユーザー向けのツールを開発している場合は、イベントを自動的に機能させることができます。その場合、イベントスターターは、Workbook_open()イベントではなく、 `link:/ events-in-vba-workbook-events-using-vba-in-microsoft-excel [Workbook object]`に配置できます。通常のモジュール。これにより、イベントを含むブックを開くとすぐに、イベントオブジェクトが初期化されます。
そうですね、これが埋め込みグラフイベントを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つの重要な機能です。これは、特定の条件で値を合計するのに役立ちます。