グラフオブジェクトでクリックイベントをキャプチャするクラスモジュールを作成しました。 1つのチャートでは期待通りに機能しますが、複数のチャートがある場合は、作成された最後のチャートだけがチャートクラスの機能を維持します。以下は、各グラフオブジェクトにグラフクラスを適用するために使用しているコードです。複数のチャートオブジェクトにクラスを適用する - VBA
Option Explicit
Global gclsDrill As New clsDrill
'Purpose: Initialize the Drill down class on each chart object
Sub InitChart()
Dim oChtObj As ChartObject
Dim oWorksheet As Worksheet
If oWorksheet Is Nothing Then Set oWorksheet = Sheets("Charts")
For Each oChtObj In oWorksheet.ChartObjects
Set gclsDrill.Chart = oChtObj.Chart
Next
End Sub
なぜ1つのチャートオブジェクトでのみ動作し、すべてのオブジェクトではなく、関連する情報が見つからないのかわかりません。誰でもアイデアはありますか?ありがとう。
おそらく、上のループで毎回gclsDrillオブジェクトのChartプロパティを上書きするためです。したがって、ループの最後には最後だけが保持されます。ループのたびに新しいclsDrillオブジェクトを作成する必要があると思われます。しかし、私はあなたのclsDrillクラスの他の詳細を知らないので、それが最善であるかどうかわかりませんが、私の推測ではそれは問題ありません。 – MacroMarc
正直、ありがとう! –
興味があれば[https://peltiertech.com/chart-events-microsoft-excel/](Microsoft Excelのチャットイベント)のチュートリアルを書いています。 –