|
おはようございます。
>他にもクラスモジュールを使ってChartオブジェクトの
>イベントを拾う方法も考えられますが、
仮にSheet1というシートにあるグラフ(グラフの名前はは何でもよいいです)
を例にコードを記述します。
クラスモジュール Class1 に
'===================================
Option Explicit
Public callingseq As String
Public WithEvents cht As Chart
'===================================
Private Sub cht_Activate()
Application.OnKey "^{RIGHT}", callingseq
End Sub
'===================================
Private Sub cht_Deactivate()
Application.OnKey "^{RIGHT}"
End Sub
Sheet1のシートモジュールに
'========================================================
Option Explicit
Private myclass() As Class1
'========================================================
Sub Worksheet_Activate()
'イベントモジュールは通常、Privateですが、
'ここは外部から呼ぶ出せるようにしておきます
Dim cht As ChartObject
Dim idx As Long
If Me.ChartObjects.Count > 0 Then
ReDim myclass(1 To Me.ChartObjects.Count)
For Each cht In Me.ChartObjects
Set myclass(idx + 1) = New Class1
With myclass(idx + 1)
Set .cht = cht.Chart
.callingseq = "sheet1.右スクロール"
End With
idx = idx + 1
Next
End If
End Sub
'========================================================
Private Sub Worksheet_Deactivate()
Erase myclass()
End Sub
Sub 右スクロール()
MsgBox "ok scroll"
End Sub
最後にThisworkbookのモジュールに
'==================================================
Private Sub Workbook_Open()
If ActiveSheet Is Worksheets("sheet1") Then
Worksheets("sheet1").Worksheet_Activate
End If
End Sub
として、一度保存して閉じた後、再度開いて確認してみてください。
>これの方が確実ですよ!!
と記述した意味も理解していただけるかもしれません。
|
|