|
▼VBA初心者 さん:
おはようございます。
現象確認しました(Excel2000、Excel2002で確認)。
これは、バグだよね?・・(仕様かもしれないか・・)。
一番は、作成するプログラムの仕様を変更することですが・・・。
例えば、book1.xlsというブックの
Thisworkbookモジュールに
'=======================================================
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
MsgBox Wn.Caption & "----Activate"
End Sub
というイベントを記述しておきます。
別のブックのChart1.XlsのSheet1というシートに
Chartobjectを一つ作成してください(Sheet1に適当なグラフを作成すると言うことです)。
このブックのThisworkbookモジュールに
'======================================================================
Private WithEvents cht As Chart
Private svwn As Window
'======================================================================
Private Sub cht_Activate()
Application.EnableEvents = False
svwn.Activate
DoEvents
cht.Parent.Select
Application.EnableEvents = True
End Sub
'=======================================================================
Private Sub Workbook_WindowActivate(ByVal wn As Window)
If wn.ActiveSheet.ChartObjects.Count > 0 Then
set_cht
End If
End Sub
'========================================================================
Private Sub Workbook_WindowDeactivate(ByVal wn As Window)
MsgBox wn.Caption & "-----Deactivate"
End Sub
'=========================================================================
Sub set_cht()
Set cht = ActiveSheet.ChartObjects(1).Chart
Set svwn = ActiveWindow
End Sub
このChart1.XlsのSheet1をアクティブにした状態で(あくまでもSheet1がアクティブであって、Sheet1にあるグラフを選択した状態ではありません)
一度、set_chtを実行してください。
その後、Chart1.XlsのSheet1上にあるグラフを選択した状態でbook1.xlsをアクティブ
にしてみてイベントが発生するか否か確認してください。
私が簡単に試した限りではイベントが発生しますが、
動作の不安定な箇所があるかもしれません。
|
|